]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: lpfc: Fix possible memory leak in lpfc_rcv_padisc()
authorJustin Tee <justin.tee@broadcom.com>
Wed, 31 Jan 2024 18:50:57 +0000 (10:50 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 13 Apr 2024 10:50:15 +0000 (12:50 +0200)
[ Upstream commit 2ae917d4bcab80ab304b774d492e2fcd6c52c06b ]

The call to lpfc_sli4_resume_rpi() in lpfc_rcv_padisc() may return an
unsuccessful status.  In such cases, the elsiocb is not issued, the
completion is not called, and thus the elsiocb resource is leaked.

Check return value after calling lpfc_sli4_resume_rpi() and conditionally
release the elsiocb resource.

Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20240131185112.149731-3-justintee8345@gmail.com
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/lpfc/lpfc_nportdisc.c

index f666518d84b0aea0b6b29d1a085499e2da9b41d8..0890c2e38eeca79a80347e7a16b0ea1c6ed2c701 100644 (file)
@@ -601,8 +601,10 @@ lpfc_rcv_padisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
                                /* Save the ELS cmd */
                                elsiocb->drvrTimeout = cmd;
 
-                               lpfc_sli4_resume_rpi(ndlp,
-                                       lpfc_mbx_cmpl_resume_rpi, elsiocb);
+                               if (lpfc_sli4_resume_rpi(ndlp,
+                                               lpfc_mbx_cmpl_resume_rpi,
+                                               elsiocb))
+                                       kfree(elsiocb);
                                goto out;
                        }
                }