linux_dsm_epyc7002/drivers/scsi/lpfc
James Smart f8adfb1d37 scsi: lpfc: Fix illegal memory access on Abort IOCBs
[ Upstream commit e1364711359f3ced054bda9920477c8bf93b74c5 ]

In devloss timer handler and in backend calls to terminate remote port I/O,
there is logic to walk through all active IOCBs and validate them to
potentially trigger an abort request. This logic is causing illegal memory
accesses which leads to a crash. Abort IOCBs, which may be on the list, do
not have an associated lpfc_io_buf struct. The driver is trying to map an
lpfc_io_buf struct on the IOCB and which results in a bogus address thus
the issue.

Fix by skipping over ABORT IOCBs (CLOSE IOCBs are ABORTS that don't send
ABTS) in the IOCB scan logic.

Link: https://lore.kernel.org/r/20210421234433.102079-1-jsmart2021@gmail.com
Co-developed-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-22 11:40:53 +02:00
..
lpfc_attr.c
lpfc_attr.h
lpfc_bsg.c
lpfc_bsg.h
lpfc_compat.h
lpfc_crtn.h
lpfc_ct.c
lpfc_debugfs.c
lpfc_debugfs.h
lpfc_disc.h
lpfc_els.c
lpfc_hbadisc.c
lpfc_hw4.h
lpfc_hw.h
lpfc_ids.h
lpfc_init.c
lpfc_logmsg.h
lpfc_mbox.c
lpfc_mem.c
lpfc_nl.h
lpfc_nportdisc.c
lpfc_nvme.c
lpfc_nvme.h
lpfc_nvmet.c
lpfc_scsi.c
lpfc_scsi.h
lpfc_sli4.h
lpfc_sli.c
lpfc_sli.h
lpfc_version.h
lpfc_vport.c
lpfc_vport.h
lpfc.h
Makefile