scsi: lpfc: Fix possible memory leak when failing to issue CMF WQE
authorJames Smart <jsmart2021@gmail.com>
Fri, 1 Jul 2022 21:14:18 +0000 (14:14 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Aug 2022 09:40:35 +0000 (11:40 +0200)
[ Upstream commit 2f67dc7970bce3529edce93a0a14234d88b3fcd5 ]

There is no corresponding free routine if lpfc_sli4_issue_wqe fails to
issue the CMF WQE in lpfc_issue_cmf_sync_wqe.

If ret_val is non-zero, then free the iocbq request structure.

Link: https://lore.kernel.org/r/20220701211425.2708-6-jsmart2021@gmail.com
Co-developed-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/lpfc/lpfc_sli.c

index fb69416c9623b87ec01bb1b0cc64d3c1234e0a2c..f594a006d04c60832db7ba25a52826db7334dbdf 100644 (file)
@@ -2012,10 +2012,12 @@ initpath:
 
        sync_buf->cmd_flag |= LPFC_IO_CMF;
        ret_val = lpfc_sli4_issue_wqe(phba, &phba->sli4_hba.hdwq[0], sync_buf);
-       if (ret_val)
+       if (ret_val) {
                lpfc_printf_log(phba, KERN_INFO, LOG_CGN_MGMT,
                                "6214 Cannot issue CMF_SYNC_WQE: x%x\n",
                                ret_val);
+               __lpfc_sli_release_iocbq(phba, sync_buf);
+       }
 out_unlock:
        spin_unlock_irqrestore(&phba->hbalock, iflags);
        return ret_val;