scsi: myrs: Fix crash in error case
[ Upstream commit 4db09593af
]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
0c8d27c2aa
Коммит
6207f35c21
|
@ -2265,6 +2265,7 @@ static void myrs_cleanup(struct myrs_hba *cs)
|
||||||
myrs_unmap(cs);
|
myrs_unmap(cs);
|
||||||
|
|
||||||
if (cs->mmio_base) {
|
if (cs->mmio_base) {
|
||||||
|
if (cs->disable_intr)
|
||||||
cs->disable_intr(cs);
|
cs->disable_intr(cs);
|
||||||
iounmap(cs->mmio_base);
|
iounmap(cs->mmio_base);
|
||||||
cs->mmio_base = NULL;
|
cs->mmio_base = NULL;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче