]> www.infradead.org Git - users/jedix/linux-maple.git/commit
scsi: lpfc: Ignore ndlp rport mismatch in dev_loss_tmo callbk
authorJustin Tee <justin.tee@broadcom.com>
Fri, 31 Jan 2025 00:05:21 +0000 (16:05 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 4 Feb 2025 02:53:22 +0000 (21:53 -0500)
commit23ed62897746f49f195d819ce6edeb1db27d1b72
treee192811b688b98998a240de36570be955af31e11
parentf0842902b383982d1f72c490996aa8fc29a7aa0d
scsi: lpfc: Ignore ndlp rport mismatch in dev_loss_tmo callbk

With repeated port swaps between separate fabrics, there can be multiple
registrations for fabric well known address 0xfffffe.  This can cause ndlp
reference confusion due to the usage of a single ndlp ptr that stores the
rport object in fc_rport struct private storage during transport
registration.  Subsequent registrations update the ndlp->rport field with
the newer rport, so when transport layer triggers dev_loss_tmo for the
earlier registered rport the ndlp->rport private storage is referencing the
newer rport instead of the older rport in dev_loss_tmo callbk.

Because the older ndlp->rport object is already cleaned up elsewhere in
driver code during the time of fabric swap, check that the rport provided
in dev_loss_tmo callbk actually matches the rport stored in the LLDD's
ndlp->rport field.  Otherwise, skip dev_loss_tmo work on a stale rport.

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