summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzhengbin <zhengbin13@huawei.com>2019-08-20 01:43:09 -0400
committerMartin K. Petersen <martin.petersen@oracle.com>2019-09-10 21:19:55 -0400
commitf96d279f0a5e53f4b96b16a5c08e2c75e139ba0b (patch)
tree281609ded73bf63bec5b7fba8ee49ceb4b7a3460
parent7ce5eed0998c0b2884329a06f29d0251079fca62 (diff)
scsi: fcoe: fix null-ptr-deref Read in fc_release_transport
In fcoe_if_init, if fc_attach_transport(&fcoe_vport_fc_functions) fails, need to free the previously memory and return fail, otherwise will trigger null-ptr-deref Read in fc_release_transport. fcoe_exit fcoe_if_exit fc_release_transport(fcoe_vport_scsi_transport) Link: https://lore.kernel.org/r/1566279789-58207-1-git-send-email-zhengbin13@huawei.com Reported-by: Hulk Robot <hulkci@huawei.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: zhengbin <zhengbin13@huawei.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/fcoe/fcoe.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index 8e217ab7646e..813f26d8b417 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -1250,15 +1250,21 @@ static int __init fcoe_if_init(void)
1250 /* attach to scsi transport */ 1250 /* attach to scsi transport */
1251 fcoe_nport_scsi_transport = 1251 fcoe_nport_scsi_transport =
1252 fc_attach_transport(&fcoe_nport_fc_functions); 1252 fc_attach_transport(&fcoe_nport_fc_functions);
1253 if (!fcoe_nport_scsi_transport)
1254 goto err;
1255
1253 fcoe_vport_scsi_transport = 1256 fcoe_vport_scsi_transport =
1254 fc_attach_transport(&fcoe_vport_fc_functions); 1257 fc_attach_transport(&fcoe_vport_fc_functions);
1255 1258 if (!fcoe_vport_scsi_transport)
1256 if (!fcoe_nport_scsi_transport) { 1259 goto err_vport;
1257 printk(KERN_ERR "fcoe: Failed to attach to the FC transport\n");
1258 return -ENODEV;
1259 }
1260 1260
1261 return 0; 1261 return 0;
1262
1263err_vport:
1264 fc_release_transport(fcoe_nport_scsi_transport);
1265err:
1266 printk(KERN_ERR "fcoe: Failed to attach to the FC transport\n");
1267 return -ENODEV;
1262} 1268}
1263 1269
1264/** 1270/**