scsi: lpfc: Fix lpfc_els_retry() possible null pointer dereference
authorJames Smart <jsmart2021@gmail.com>
Mon, 1 Mar 2021 17:18:05 +0000 (09:18 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 4 Mar 2021 22:37:04 +0000 (17:37 -0500)
Driver crashed in lpfc_debugfs_disc_trc() due to null ndlp pointer.  In
some calling cases, the ndlp is null and the did is looked up.

Fix by using the local did variable that is set appropriately based on ndlp
value.

Link: https://lore.kernel.org/r/20210301171821.3427-7-jsmart2021@gmail.com
Co-developed-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_els.c

index 27e2f8136f73ddf51110fee39ac0425805a0fe85..e0454c53267b0a745d5001d986abacb59da7f0f4 100644 (file)
@@ -3823,7 +3823,7 @@ lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
 
        lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD,
                "Retry ELS:       wd7:x%x wd4:x%x did:x%x",
-               *(((uint32_t *) irsp) + 7), irsp->un.ulpWord[4], ndlp->nlp_DID);
+               *(((uint32_t *)irsp) + 7), irsp->un.ulpWord[4], did);
 
        switch (irsp->ulpStatus) {
        case IOSTAT_FCP_RSP_ERROR: