linux_dsm_epyc7002/drivers/scsi/lpfc
James Smart 8931c73bee scsi: lpfc: Fix list corruption on the completion queue.
Enabling list_debug showed the drivers txcmplq was suffering list
corruption. The systems will eventually crash because the iocb free list
gets crossed linked with the prings txcmplq.  Most systems will run for a
while after the corruption, but will eventually crash when a scsi eh reset
occurs and the txcmplq is attempted to be flushed. The flush gets stuck in
an endless loop.

The problem is the abort handler does not hold the sli4 ring lock while
validating the IO so the IO could complete while the driver is still
preping the abort.  The erroneously generated abort, when it completes, has
pointers to the original IO that has already completed, and the IO
manipulation (for the second time) corrupts the list.

Correct by taking the ring lock early in the abort handler so the erroneous
abort won't be sent if the io has/is completing.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2018-08-02 15:45:18 -04:00
..
lpfc_attr.c scsi: lpfc: Fix sysfs Speed value on CNA ports 2018-08-02 15:45:18 -04:00
lpfc_attr.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_bsg.c scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_bsg.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_compat.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_crtn.h scsi: lpfc: remove ScsiResult macro 2018-07-10 22:42:47 -04:00
lpfc_ct.c scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_debugfs.c scsi: lpfc: Comment cleanup regarding Broadcom copyright header 2018-05-08 01:03:16 -04:00
lpfc_debugfs.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_disc.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_els.c scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_hbadisc.c scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_hw4.h scsi: lpfc: Support duration field in Link Cable Beacon V1 command 2018-07-10 22:15:09 -04:00
lpfc_hw.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_ids.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_init.c scsi: lpfc: Support duration field in Link Cable Beacon V1 command 2018-07-10 22:15:09 -04:00
lpfc_logmsg.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_mbox.c scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_mem.c scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_nl.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_nportdisc.c scsi: lpfc: Fix ELS abort on SLI-3 adapters 2018-08-02 15:45:18 -04:00
lpfc_nvme.c scsi: lpfc: Make PBDE optimizations configurable 2018-07-10 22:15:09 -04:00
lpfc_nvme.h scsi: lpfc: Comment cleanup regarding Broadcom copyright header 2018-05-08 01:03:16 -04:00
lpfc_nvmet.c scsi: lpfc: remove null check on nvmebuf 2018-07-30 23:17:53 -04:00
lpfc_nvmet.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_scsi.c scsi: lpfc: Fix list corruption on the completion queue. 2018-08-02 15:45:18 -04:00
lpfc_scsi.h scsi: lpfc: Comment cleanup regarding Broadcom copyright header 2018-05-08 01:03:16 -04:00
lpfc_sli4.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_sli.c scsi: lpfc: Fix ELS abort on SLI-3 adapters 2018-08-02 15:45:18 -04:00
lpfc_sli.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_version.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_vport.c scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_vport.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
Makefile scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00