mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
scsi: lpfc: Check devloss callbk done flag for potential stale NDLP ptrs
Should an rport remain in the NOTPRESENT state it is possible that stgt_delete_work is scheduled after dev_loss_tmo_callbk. In such cases, dev_loss_tmo_callbk would have cleaned up the NDLP object resulting in stale ndlp pointers in lpfc_terminate_rport_io(). Check for the DEVLOSS_CALLBK_DONE flag to know if dev_loss_tmo_callbk has been called. This is a more reliable way to avoid dereferencing stale NDLP pointers. Signed-off-by: Justin Tee <justin.tee@broadcom.com> Link: https://lore.kernel.org/r/20241031223219.152342-3-justintee8345@gmail.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
29a64210c7
commit
4c113ac05b
|
|
@ -100,6 +100,12 @@ lpfc_rport_invalid(struct fc_rport *rport)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (rport->flags & FC_RPORT_DEVLOSS_CALLBK_DONE) {
|
||||
pr_info("**** %s: devloss_callbk_done rport x%px SID x%x\n",
|
||||
__func__, rport, rport->scsi_target_id);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
rdata = rport->dd_data;
|
||||
if (!rdata) {
|
||||
pr_err("**** %s: NULL dd_data on rport x%px SID x%x\n",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user