linux/drivers/scsi/lpfc
James Smart 4012baeab6 scsi: lpfc: Fix Node recovery when driver is handling simultaneous PLOGIs
When lpfc is handling a solicited and unsolicited PLOGI with another
initiator, the remote initiator is never recovered. The node for the
initiator is erroneouosly removed and all resources released.

In lpfc_cmpl_els_plogi(), when lpfc_els_retry() returns a failure code, the
driver is calling the state machine with a device remove event because the
remote port is not currently registered with the SCSI or NVMe
transports. The issue is that on a PLOGI "collision" the driver correctly
aborts the solicited PLOGI and allows the unsolicited PLOGI to complete the
process, but this process is interrupted with a device_rm event.

Introduce logic in the PLOGI completion to capture the PLOGI collision
event and jump out of the routine.  This will avoid removal of the node.
If there is no collision, the normal node removal will occur.

Fixes: 	52edb2caf6 ("scsi: lpfc: Remove ndlp when a PLOGI/ADISC/PRLI/REG_RPI ultimately fails")
Cc: <stable@vger.kernel.org> # v5.11+
Link: https://lore.kernel.org/r/20210514195559.119853-6-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>
2021-05-21 23:23:27 -04:00
..
lpfc_attr.c scsi: lpfc: Eliminate use of LPFC_DRIVER_NAME in lpfc_attr.c 2021-04-13 01:39:14 -04:00
lpfc_attr.h
lpfc_bsg.c scsi: lpfc: Fix DMA virtual address ptr assignment in bsg 2021-04-26 22:57:27 -04:00
lpfc_bsg.h scsi: lpfc: Allow applications to issue Common Set Features mailbox command 2020-07-02 23:06:40 -04:00
lpfc_compat.h
lpfc_crtn.h scsi: lpfc: Remove unsupported mbox PORT_CAPABILITIES logic 2021-04-13 01:39:14 -04:00
lpfc_ct.c scsi: lpfc: Copyright updates for 12.8.0.9 patches 2021-04-13 01:39:14 -04:00
lpfc_debugfs.c scsi: lpfc: Fix unreleased RPIs when NPIV ports are created 2021-05-21 23:23:27 -04:00
lpfc_debugfs.h scsi: lpfc: Make debugfs ktime stats generic for NVME and SCSI 2020-03-29 18:10:58 -04:00
lpfc_disc.h scsi: lpfc: Update copyrights for 12.8.0.7 and 12.8.0.8 changes 2021-03-04 17:37:06 -05:00
lpfc_els.c scsi: lpfc: Fix Node recovery when driver is handling simultaneous PLOGIs 2021-05-21 23:23:27 -04:00
lpfc_hbadisc.c scsi: lpfc: Fix unreleased RPIs when NPIV ports are created 2021-05-21 23:23:27 -04:00
lpfc_hw4.h scsi: lpfc: Copyright updates for 12.8.0.9 patches 2021-04-13 01:39:14 -04:00
lpfc_hw.h scsi: lpfc: Reject CT request for MIB commands 2020-10-26 21:42:39 -04:00
lpfc_ids.h
lpfc_init.c scsi: lpfc: Fix unreleased RPIs when NPIV ports are created 2021-05-21 23:23:27 -04:00
lpfc_logmsg.h scsi: lpfc: Add an internal trace log buffer 2020-07-02 23:06:49 -04:00
lpfc_mbox.c scsi: lpfc: Copyright updates for 12.8.0.9 patches 2021-04-13 01:39:14 -04:00
lpfc_mem.c scsi: lpfc: Re-fix use after free in lpfc_rq_buf_free() 2020-10-26 21:42:38 -04:00
lpfc_nl.h
lpfc_nportdisc.c scsi: lpfc: Add ndlp kref accounting for resume RPI path 2021-05-21 23:23:27 -04:00
lpfc_nvme.c scsi: lpfc: Fix non-optimized ERSP handling 2021-05-21 23:23:27 -04:00
lpfc_nvme.h scsi: lpfc: Update changed file copyrights for 2020 2020-11-17 00:43:56 -05:00
lpfc_nvmet.c scsi: lpfc: Fix NMI crash during rmmod due to circular hbalock dependency 2021-04-13 01:39:13 -04:00
lpfc_scsi.c scsi: lpfc: Standardize discovery object logging format 2021-04-13 01:39:14 -04:00
lpfc_scsi.h
lpfc_sli4.h scsi: lpfc: Add FDMI Vendor MIB support 2020-10-26 21:42:39 -04:00
lpfc_sli.c scsi: lpfc: Add ndlp kref accounting for resume RPI path 2021-05-21 23:23:27 -04:00
lpfc_sli.h scsi: lpfc: Update changed file copyrights for 2020 2020-11-17 00:43:56 -05:00
lpfc_version.h scsi: lpfc: Update lpfc version to 12.8.0.9 2021-04-13 01:39:14 -04:00
lpfc_vport.c scsi: lpfc: Update copyrights for 12.8.0.7 and 12.8.0.8 changes 2021-03-04 17:37:06 -05:00
lpfc_vport.h
lpfc.h scsi: lpfc: Update copyrights for 12.8.0.7 and 12.8.0.8 changes 2021-03-04 17:37:06 -05:00
Makefile