scsi: lpfc: Correct used_rpi count when devloss tmo fires with no recovery
authorJustin Tee <justin.tee@broadcom.com>
Wed, 1 Mar 2023 23:16:22 +0000 (15:16 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 10 Mar 2023 02:21:44 +0000 (21:21 -0500)
commitdb651ec22524eb8f9c854fbb4d9acd5d7e5be9e4
tree6b964d3c78aca3a2b66deea646d28f1afc358aac
parent1d0f9fea5d7f48078a706c90e4fd79cf697b5b3c
scsi: lpfc: Correct used_rpi count when devloss tmo fires with no recovery

A fabric controller can sometimes send an RDP request right before a link
down event.  Because of this outstanding RDP request, the driver does not
remove the last reference count on its ndlp causing a potential leak of RPI
resources when devloss tmo fires.

In lpfc_cmpl_els_rsp(), modify the NPIV clause to always allow the
lpfc_drop_node() routine to execute when not registered with SCSI
transport.

This relaxes the contraint that an NPIV ndlp must be in a specific state in
order to call lpfc_drop node.  Logic is revised such that the
lpfc_drop_node() routine is always called to ensure the last ndlp decrement
occurs.

Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20230301231626.9621-7-justintee8345@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_els.c