scsi: lpfc: Fix kref imbalance on fabric ndlps from dev_loss_tmo handler
authorJustin Tee <justin.tee@broadcom.com>
Thu, 12 Sep 2024 23:24:43 +0000 (16:24 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 13 Sep 2024 01:21:19 +0000 (21:21 -0400)
commitd1a2ef63fc8b3e3dc5b74b7e08636896b32acbdc
tree697f93eef8a612cef058054b5cef44d232b9f829
parent05ab4e7846f1103377133c00295a9a910cc6dfc2
scsi: lpfc: Fix kref imbalance on fabric ndlps from dev_loss_tmo handler

With a FLOGI outstanding and loss of physical link connection to the fabric
for the duration of dev_loss_tmo, there is a fabric ndlp kref imbalance
that decrements the kref and sets the NLP_IN_RECOV_POST_DEV_LOSS flag at
the same time.

The issue is that when the FLOGI completion routine executes, the fabric
ndlp could already be freed because of the final kref put from the
dev_loss_tmo handler.  Fix by early returning before the ndlp kref put if
the ndlp is deemed a candidate for NLP_IN_RECOV_POST_DEV_LOSS in the FLOGI
completion routine.

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