Skip to content

Commit 6539262

Browse files
ipylypivmartinkpetersen
authored andcommitted
scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc()
Calling scsi_remove_host() before scsi_add_host() results in a crash: BUG: kernel NULL pointer dereference, address: 0000000000000108 RIP: 0010:device_del+0x63/0x440 Call Trace: device_unregister+0x17/0x60 scsi_remove_host+0xee/0x2a0 pm8001_pci_probe+0x6ef/0x1b90 [pm80xx] local_pci_probe+0x3f/0x90 We cannot call scsi_remove_host() in pm8001_alloc() because scsi_add_host() has not been called yet at that point in time. Function call tree: pm8001_pci_probe() | `- pm8001_pci_alloc() | | | `- pm8001_alloc() | | | `- scsi_remove_host() | `- scsi_add_host() Link: https://lore.kernel.org/r/[email protected] Fixes: 05c6c02 ("scsi: pm80xx: Increase number of supported queues") Reviewed-by: Vishakha Channapattan <[email protected]> Acked-by: Jack Wang <[email protected]> Signed-off-by: Igor Pylypiv <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
1 parent 7dc9fb4 commit 6539262

File tree

1 file changed

+2
-4
lines changed

1 file changed

+2
-4
lines changed

drivers/scsi/pm8001/pm8001_init.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,12 +282,12 @@ static int pm8001_alloc(struct pm8001_hba_info *pm8001_ha,
282282
if (rc) {
283283
pm8001_dbg(pm8001_ha, FAIL,
284284
"pm8001_setup_irq failed [ret: %d]\n", rc);
285-
goto err_out_shost;
285+
goto err_out;
286286
}
287287
/* Request Interrupt */
288288
rc = pm8001_request_irq(pm8001_ha);
289289
if (rc)
290-
goto err_out_shost;
290+
goto err_out;
291291

292292
count = pm8001_ha->max_q_num;
293293
/* Queues are chosen based on the number of cores/msix availability */
@@ -423,8 +423,6 @@ static int pm8001_alloc(struct pm8001_hba_info *pm8001_ha,
423423
pm8001_tag_init(pm8001_ha);
424424
return 0;
425425

426-
err_out_shost:
427-
scsi_remove_host(pm8001_ha->shost);
428426
err_out_nodev:
429427
for (i = 0; i < pm8001_ha->max_memcnt; i++) {
430428
if (pm8001_ha->memoryMap.region[i].virt_ptr != NULL) {

0 commit comments

Comments
 (0)