lpfc 10.4.8000.0: Fix for handling unmapped ndlp in target reset handler
Subsystems (2)
PATCH 18/19 lpfc 10.4.8000.0: Fix for handling unmapped ndlp in target reset handler
Fix for handling unmapped ndlp in target reset handler
Signed-off-by James Smart <[email protected]>
Signed-off-by Dick Kennedy <[email protected]>
--- drivers/scsi/lpfc/lpfc_scsi.c | 8 +++++++- drivers/scsi/lpfc/lpfc_sli.c | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-)
drivers/scsi/lpfc/lpfc_scsi.c +7 -1
@@ -5339,7 +5339,13 @@ lpfc_target_reset_handler(struct scsi_cmnd *cmnd)if (status ==FAILED ) {lpfc_printf_vlog (vport,KERN_ERR ,LOG_FCP ,"0722 Target Reset rport failure: rdata x%p\n" , rdata); -return FAILED ; +spin_lock_irq (shost->host_lock); + pnode->nlp_flag &= ~NLP_NPR_ADISC ; + pnode->nlp_fcp_info &= ~NLP_FCP_2_DEVICE ; +spin_unlock_irq (shost->host_lock); +lpfc_reset_flush_io_context (vport, tgt_id, lun_id, +LPFC_CTX_TGT ); +return FAST_IO_FAIL ; } scsi_event.event_type =FC_REG_SCSI_EVENT ;
drivers/scsi/lpfc/lpfc_sli.c +7 -1
@@ -10132,7 +10132,9 @@ lpfc_sli_abort_taskmgmt(struct lpfc_vport *vport, struct lpfc_sli_ring *pring, uint16_t tgt_id, uint64_t lun_id, lpfc_ctx_cmd cmd) { struct lpfc_hba *phba = vport->phba; +struct lpfc_scsi_buf *lpfc_cmd;struct lpfc_iocbq *abtsiocbq; +struct lpfc_nodelist *ndlp;struct lpfc_iocbq *iocbq;IOCB_t *icmd;int sum, i, ret_val;
@@ -10187,7 +10189,11 @@ lpfc_sli_abort_taskmgmt(struct lpfc_vport *vport, struct lpfc_sli_ring *pring,if (iocbq->iocb_flag &LPFC_IO_FOF ) abtsiocbq->iocb_flag |=LPFC_IO_FOF ; -if (lpfc_is_link_up (phba)) + lpfc_cmd = container_of(iocbq, struct lpfc_scsi_buf, cur_iocbq); + ndlp = lpfc_cmd->rdata->pnode; + +if (lpfc_is_link_up (phba) && + (ndlp && ndlp->nlp_state ==NLP_STE_MAPPED_NODE )) abtsiocbq->iocb.ulpCommand =CMD_ABORT_XRI_CN ;else abtsiocbq->iocb.ulpCommand =CMD_CLOSE_XRI_CN ;
Signature · 1 line
1.7.11.7