Skip to contentSkip to conversation

lpfc 10.4.8000.0: Fixed crash from page fault caused by use after rport delete

PATCH Applied James Smart 1 participant 1 message Sep 3, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 15/19 lpfc 10.4.8000.0: Fixed crash from page fault caused by use after rport delete

Fixed crash from page fault caused by use after rport delete

---
 drivers/scsi/lpfc/lpfc_hbadisc.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)
drivers/scsi/lpfc/lpfc_hbadisc.c +12 -0
index 2d929a5..310507d 100644
@@ -150,6 +150,17 @@ lpfc_dev_loss_tmo_callbk(struct fc_rport *rport)
 
 		/* If the WWPN of the rport and ndlp don't match, ignore it */
 		if (rport->port_name != wwn_to_u64(ndlp->nlp_portname.u.wwn)) {
+			lpfc_printf_vlog(vport, KERN_ERR, LOG_NODE,
+				"6789 rport name %lx != node port name %lx",
+				(unsigned long)rport->port_name,
+				(unsigned long)wwn_to_u64(
+						ndlp->nlp_portname.u.wwn));
+			put_node = rdata->pnode != NULL;
+			put_rport = ndlp->rport != NULL;
+			rdata->pnode = NULL;
+			ndlp->rport = NULL;
+			if (put_node)
+				lpfc_nlp_put(ndlp);
 			put_device(&rport->dev);
 			return;
 		}
@@ -285,6 +296,7 @@ lpfc_dev_loss_tmo_handler(struct lpfc_nodelist *ndlp)
 	if (ndlp->nlp_sid != NLP_NO_SID) {
 		warn_on = 1;
 		/* flush the target */
+		ndlp->nlp_add_flag &= ~NLP_IN_DEV_LOSS;
 		lpfc_sli_abort_iocb(vport, &phba->sli.ring[phba->sli.fcp_ring],
 				    ndlp->nlp_sid, 0, LPFC_CTX_TGT);
 	}
Signature · 1 line
1.7.11.7