]> git.baikalelectronics.ru Git - kernel.git/commit
scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc()
authorIgor Pylypiv <ipylypiv@google.com>
Wed, 1 Dec 2021 04:16:27 +0000 (20:16 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 14 Dec 2021 09:57:16 +0000 (10:57 +0100)
commit50b4fd48a1adf7767d1a9ad812f4d59c9b33554d
tree920c7af12e1c6a452e6870b63d755886fdd4b514
parent54885b71f1252bce3df3c94017bee4917b6af117
scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc()

commit 249273b6ac73c7aaa3c1f4584870f6559f703e93 upstream.

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/20211201041627.1592487-1-ipylypiv@google.com
Fixes: 7266bb90ee0d ("scsi: pm80xx: Increase number of supported queues")
Reviewed-by: Vishakha Channapattan <vishakhavc@google.com>
Acked-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Igor Pylypiv <ipylypiv@google.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/pm8001/pm8001_init.c