Commit 9d8de441 authored by James Smart's avatar James Smart Committed by Martin K. Petersen

scsi: lpfc: Correct null ndlp reference on routine exit

smatch correctly called out a logic error with accessing a pointer after
checking it for null:

 drivers/scsi/lpfc/lpfc_els.c:2043 lpfc_cmpl_els_plogi()
 error: we previously assumed 'ndlp' could be null (see line 1942)

Adjust the exit point to avoid the trace printf ndlp reference. A trace
entry was already generated when the ndlp was checked for null.

Link: https://lore.kernel.org/r/20201130181226.16675-1-james.smart@broadcom.com
Fixes: 4430f7fd ("scsi: lpfc: Rework locations of ndlp reference taking")
Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 29b87e92
...@@ -1946,7 +1946,7 @@ lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, ...@@ -1946,7 +1946,7 @@ lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
irsp->un.elsreq64.remoteID, irsp->un.elsreq64.remoteID,
irsp->ulpStatus, irsp->un.ulpWord[4], irsp->ulpStatus, irsp->un.ulpWord[4],
irsp->ulpIoTag); irsp->ulpIoTag);
goto out; goto out_freeiocb;
} }
/* Since ndlp can be freed in the disc state machine, note if this node /* Since ndlp can be freed in the disc state machine, note if this node
...@@ -2042,6 +2042,7 @@ lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, ...@@ -2042,6 +2042,7 @@ lpfc_cmpl_els_plogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
"PLOGI Cmpl PUT: did:x%x refcnt %d", "PLOGI Cmpl PUT: did:x%x refcnt %d",
ndlp->nlp_DID, kref_read(&ndlp->kref), 0); ndlp->nlp_DID, kref_read(&ndlp->kref), 0);
out_freeiocb:
/* Release the reference on the original I/O request. */ /* Release the reference on the original I/O request. */
free_ndlp = (struct lpfc_nodelist *)cmdiocb->context1; free_ndlp = (struct lpfc_nodelist *)cmdiocb->context1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment