summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/myrs.c
diff options
context:
space:
mode:
authorTong Zhang <ztong0001@gmail.com>2022-01-23 23:57:17 +0100
committerMartin K. Petersen <martin.petersen@oracle.com>2022-01-25 06:09:41 +0100
commit4db09593af0b0b4d7d4805ebb3273df51d7cc30d (patch)
tree6fdd50032e248bd82d83d74e9c6fb20225d17d0d /drivers/scsi/myrs.c
parentscsi: 53c700: Remove redundant assignment to pointer SCp (diff)
downloadlinux-4db09593af0b0b4d7d4805ebb3273df51d7cc30d.tar.xz
linux-4db09593af0b0b4d7d4805ebb3273df51d7cc30d.zip
scsi: myrs: Fix crash in error case
In myrs_detect(), cs->disable_intr is NULL when privdata->hw_init() fails with non-zero. In this case, myrs_cleanup(cs) will call a NULL ptr and crash the kernel. [ 1.105606] myrs 0000:00:03.0: Unknown Initialization Error 5A [ 1.105872] myrs 0000:00:03.0: Failed to initialize Controller [ 1.106082] BUG: kernel NULL pointer dereference, address: 0000000000000000 [ 1.110774] Call Trace: [ 1.110950] myrs_cleanup+0xe4/0x150 [myrs] [ 1.111135] myrs_probe.cold+0x91/0x56a [myrs] [ 1.111302] ? DAC960_GEM_intr_handler+0x1f0/0x1f0 [myrs] [ 1.111500] local_pci_probe+0x48/0x90 Link: https://lore.kernel.org/r/20220123225717.1069538-1-ztong0001@gmail.com Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Tong Zhang <ztong0001@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/myrs.c')
-rw-r--r--drivers/scsi/myrs.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/myrs.c b/drivers/scsi/myrs.c
index 253ceca54a84..7eb8c39da366 100644
--- a/drivers/scsi/myrs.c
+++ b/drivers/scsi/myrs.c
@@ -2267,7 +2267,8 @@ static void myrs_cleanup(struct myrs_hba *cs)
myrs_unmap(cs);
if (cs->mmio_base) {
- cs->disable_intr(cs);
+ if (cs->disable_intr)
+ cs->disable_intr(cs);
iounmap(cs->mmio_base);
cs->mmio_base = NULL;
}