From: James Smart <james.smart@broadcom.com>
To: "wubo (T)" <wubo40@huawei.com>,
"dick.kennedy@broadcom.com" <dick.kennedy@broadcom.com>,
"jejb@linux.vnet.ibm.com" <jejb@linux.vnet.ibm.com>,
"martin.petersen@oracle.com" <martin.petersen@oracle.com>,
"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: "liuzhiqiang (I)" <liuzhiqiang26@huawei.com>,
Mingfangsen <mingfangsen@huawei.com>
Subject: Re: [PATCH] scsi:lpfc:Fix memory leak on lpfc_bsg_write_ebuf_set func
Date: Mon, 9 Dec 2019 09:48:44 -0800 [thread overview]
Message-ID: <4afb52b8-c3ff-8c29-2597-11b8428e75b1@broadcom.com> (raw)
In-Reply-To: <EDBAAA0BBBA2AC4E9C8B6B81DEEE1D6915E7A966@DGGEML525-MBS.china.huawei.com>
On 12/6/2019 7:22 PM, wubo (T) wrote:
> When phba->mbox_ext_buf_ctx.seqNum != phba->mbox_ext_buf_ctx.numBuf,
> dd_data should be freed before return SLI_CONFIG_HANDLED.
>
> When lpfc_sli_issue_mbox func return fails, pmboxq should be also freed in job_error tag.
>
>
> Signed-off-by:Bo wu <wubo40@huawei.com>
> Reviewed-by:Zhiqiang Liu <liuzhiqiang26@huawei.com>
> ---
> drivers/scsi/lpfc/lpfc_bsg.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c
> index 39a736b887b1..6c2b03415a2c 100644
> --- a/drivers/scsi/lpfc/lpfc_bsg.c
> +++ b/drivers/scsi/lpfc/lpfc_bsg.c
> @@ -4489,12 +4489,6 @@ lpfc_bsg_write_ebuf_set(struct lpfc_hba *phba, struct bsg_job *job,
> phba->mbox_ext_buf_ctx.seqNum++;
> nemb_tp = phba->mbox_ext_buf_ctx.nembType;
>
> - dd_data = kmalloc(sizeof(struct bsg_job_data), GFP_KERNEL);
> - if (!dd_data) {
> - rc = -ENOMEM;
> - goto job_error;
> - }
> -
> pbuf = (uint8_t *)dmabuf->virt;
> size = job->request_payload.payload_len;
> sg_copy_to_buffer(job->request_payload.sg_list,
> @@ -4531,6 +4525,13 @@ lpfc_bsg_write_ebuf_set(struct lpfc_hba *phba, struct bsg_job *job,
> "2968 SLI_CONFIG ext-buffer wr all %d "
> "ebuffers received\n",
> phba->mbox_ext_buf_ctx.numBuf);
> +
> + dd_data = kmalloc(sizeof(struct bsg_job_data), GFP_KERNEL);
> + if (!dd_data) {
> + rc = -ENOMEM;
> + goto job_error;
> + }
> +
> /* mailbox command structure for base driver */
> pmboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
> if (!pmboxq) {
> @@ -4579,6 +4580,8 @@ lpfc_bsg_write_ebuf_set(struct lpfc_hba *phba, struct bsg_job *job,
> return SLI_CONFIG_HANDLED;
>
> job_error:
> + if (pmboxq)
> + mempool_free(pmboxq, phba->mbox_mem_pool);
> lpfc_bsg_dma_page_free(phba, dmabuf);
> kfree(dd_data);
>
Looks good!
Reviewed-by: James Smart <james.smart@broadcom.com>
-- james
next prev parent reply other threads:[~2019-12-09 17:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-07 3:22 wubo (T)
2019-12-09 17:48 ` James Smart [this message]
2019-12-09 23:09 ` Martin K. Petersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4afb52b8-c3ff-8c29-2597-11b8428e75b1@broadcom.com \
--to=james.smart@broadcom.com \
--cc=dick.kennedy@broadcom.com \
--cc=jejb@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=liuzhiqiang26@huawei.com \
--cc=martin.petersen@oracle.com \
--cc=mingfangsen@huawei.com \
--cc=wubo40@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®