All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yuval Shaia <yuval.shaia@oracle.com>
To: P J P <ppandit@redhat.com>
Cc: Qemu Developers <qemu-devel@nongnu.org>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Saar Amar <saaramar5@gmail.com>, Li Qiang <liq3ea@163.com>,
	Prasad J Pandit <pjp@fedoraproject.org>,
	yuval.shaia@oracle.com
Subject: Re: [Qemu-devel] [PATCH 4/5] pvrdma: release ring object in case of an error
Date: Tue, 11 Dec 2018 18:47:43 +0200	[thread overview]
Message-ID: <20181211164742.GA2923@lap1> (raw)
In-Reply-To: <20181211132642.3027-5-ppandit@redhat.com>

On Tue, Dec 11, 2018 at 06:56:41PM +0530, P J P wrote:
> From: Prasad J Pandit <pjp@fedoraproject.org>
> 
> create_cq and create_qp routines allocate ring object, but it's
> not released in case of an error, leading to memory leakage.
> 
> Reported-by: Li Qiang <liq3ea@163.com>
> Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
> ---
>  hw/rdma/vmw/pvrdma_cmd.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/rdma/vmw/pvrdma_cmd.c b/hw/rdma/vmw/pvrdma_cmd.c
> index ee2888259c..e8d99f29fa 100644
> --- a/hw/rdma/vmw/pvrdma_cmd.c
> +++ b/hw/rdma/vmw/pvrdma_cmd.c
> @@ -337,7 +337,9 @@ static int create_cq(PVRDMADev *dev, union pvrdma_cmd_req *req,
>  
>      resp->hdr.err = rdma_rm_alloc_cq(&dev->rdma_dev_res, &dev->backend_dev,
>                                       cmd->cqe, &resp->cq_handle, ring);
> -    resp->cqe = cmd->cqe;
> +    if (resp->hdr.err) {
> +        g_free(ring);

This is not enough since all ring's resources (ring state and ring's pages)
left mapped.

The steps needed are the steps detailed in destroy_cq.

> +    }
>  
>  out:
>      pr_dbg("ret=%d\n", resp->hdr.err);
> @@ -490,6 +492,10 @@ static int create_qp(PVRDMADev *dev, union pvrdma_cmd_req *req,
>                                       cmd->max_send_sge, cmd->send_cq_handle,
>                                       cmd->max_recv_wr, cmd->max_recv_sge,
>                                       cmd->recv_cq_handle, rings, &resp->qpn);
> +    if (resp->hdr.err) {
> +        g_free(rings);

Ditto, here send rind and recv rings stays mapped.
Look at how QP's ring is destroyed in destroy_qp.

For both case suggesting to define a new static function that destroy rings
and call it from both error flow of create_* and from destroy_*

> +        goto out;
> +    }
>  
>      resp->max_send_wr = cmd->max_send_wr;
>      resp->max_recv_wr = cmd->max_recv_wr;
> -- 
> 2.19.2
> 

  reply	other threads:[~2018-12-11 16:48 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-11 13:26 [Qemu-devel] [PATCH 0/5] rdma: various issues in rdma/pvrdma backend P J P
2018-12-11 13:26 ` [Qemu-devel] [PATCH 1/5] rdma: check that num_sge does not exceed MAX_SGE P J P
2018-12-11 14:51   ` Yuval Shaia
2018-12-11 13:26 ` [Qemu-devel] [PATCH 2/5] pvrdma: add uar_read routine P J P
2018-12-11 15:22   ` Yuval Shaia
2018-12-12  1:22     ` 李强
2018-12-11 13:26 ` [Qemu-devel] [PATCH 3/5] pvrdma: check number of pages when creating rings P J P
2018-12-11 15:38   ` Yuval Shaia
2018-12-11 13:26 ` [Qemu-devel] [PATCH 4/5] pvrdma: release ring object in case of an error P J P
2018-12-11 16:47   ` Yuval Shaia [this message]
2018-12-11 17:22     ` Yuval Shaia
2018-12-11 20:14       ` P J P
2018-12-12  9:39         ` P J P
2018-12-12 16:52           ` Yuval Shaia
2018-12-12 18:08           ` Yuval Shaia
2018-12-12 18:37             ` P J P
2018-12-11 13:26 ` [Qemu-devel] [PATCH 5/5] pvrdma: check return value from pvrdma_idx_ring_has_ routines P J P
2018-12-11 17:17   ` Yuval Shaia

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=20181211164742.GA2923@lap1 \
    --to=yuval.shaia@oracle.com \
    --cc=liq3ea@163.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=pjp@fedoraproject.org \
    --cc=ppandit@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=saaramar5@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.