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

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);
+    }
 
 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);
+        goto out;
+    }
 
     resp->max_send_wr = cmd->max_send_wr;
     resp->max_recv_wr = cmd->max_recv_wr;
-- 
2.19.2

  parent reply	other threads:[~2018-12-11 13:29 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 ` P J P [this message]
2018-12-11 16:47   ` [Qemu-devel] [PATCH 4/5] pvrdma: release ring object in case of an error Yuval Shaia
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=20181211132642.3027-5-ppandit@redhat.com \
    --to=ppandit@redhat.com \
    --cc=liq3ea@163.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=pjp@fedoraproject.org \
    --cc=qemu-devel@nongnu.org \
    --cc=saaramar5@gmail.com \
    --cc=yuval.shaia@oracle.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.