From nobody Fri Nov 7 04:02:13 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=163.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1546960532947473.52862396442947; Tue, 8 Jan 2019 07:15:32 -0800 (PST) Received: from localhost ([127.0.0.1]:46280 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ggt6J-0001FC-PP for importer@patchew.org; Tue, 08 Jan 2019 10:15:31 -0500 Received: from eggs.gnu.org ([209.51.188.92]:48779) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ggsuv-0008Q4-Dz for qemu-devel@nongnu.org; Tue, 08 Jan 2019 10:03:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ggsur-00017T-E5 for qemu-devel@nongnu.org; Tue, 08 Jan 2019 10:03:44 -0500 Received: from m12-17.163.com ([220.181.12.17]:41815) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ggsup-0000va-FU for qemu-devel@nongnu.org; Tue, 08 Jan 2019 10:03:41 -0500 Received: from localhost.localdomain (unknown [115.206.0.47]) by smtp13 (Coremail) with SMTP id EcCowAB3PuPGuzRcdssTAA--.2430S2; Tue, 08 Jan 2019 23:03:35 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id; bh=Jh5JUAZik9WTVmviJG F+NmvXAdAD1k5vbyfeum67f5w=; b=QizODqz5N2uAGXrKPr20bucUZOlqLfWWE6 Lj1q83+3LuVN7FnHm2Ttkp7WW8j3i2H+mgbet/u4l4WX0EjTljCZINmnvtHBMGYv Ifxyx9yN6FeTyv+WZe+eABunDlgq5pM1UxvomCGPnNYeRGYUNomLi++/uUx7xTWX NN70H05cM= From: Li Qiang To: yuval.shaia@oracle.com, marcel.apfelbaum@gmail.com Date: Tue, 8 Jan 2019 07:02:28 -0800 Message-Id: <20190108150228.32936-1-liq3ea@163.com> X-Mailer: git-send-email 2.17.1 X-CM-TRANSID: EcCowAB3PuPGuzRcdssTAA--.2430S2 X-Coremail-Antispam: 1Uf129KBjvJXoW7AFykWr48KrWDtF48Kw1Utrb_yoW8Ww18pr W3tF4UC3s0g3Wj93WFga1qva1UAwsYgw4UW3yjyw18ArnxZryxJw1jk348trZ8JayIvF1U ZFWkJrs8C343Ja7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07UONV9UUUUU= X-Originating-IP: [115.206.0.47] X-CM-SenderInfo: 5oltjvrd6rljoofrz/xtbBLwg2bVUMHgOY5QAAsF X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 220.181.12.17 Subject: [Qemu-devel] [PATCH v2] hw: pvrdma: fix memory leak in error path X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Li Qiang , philmd@redhat.com, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Currently, pvrdma_qp_send() function leak the 'comp_ctx', Since 'comp_ctx' is used after the two checks, just relocate the allocation & initialization after the two check. Spotted by Coverity: CID 1398595 Fixes: 2b05705dc8 Signed-off-by: Li Qiang Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Yuval Shaia Suggested-by: Yuval Shaia --- hw/rdma/vmw/pvrdma_qp_ops.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/hw/rdma/vmw/pvrdma_qp_ops.c b/hw/rdma/vmw/pvrdma_qp_ops.c index 300471a4c9..471bdbaaa0 100644 --- a/hw/rdma/vmw/pvrdma_qp_ops.c +++ b/hw/rdma/vmw/pvrdma_qp_ops.c @@ -157,14 +157,6 @@ int pvrdma_qp_send(PVRDMADev *dev, uint32_t qp_handle) =20 pr_dbg("wr_id=3D%" PRIx64 "\n", wqe->hdr.wr_id); =20 - /* Prepare CQE */ - comp_ctx =3D g_malloc(sizeof(CompHandlerCtx)); - comp_ctx->dev =3D dev; - comp_ctx->cq_handle =3D qp->send_cq_handle; - comp_ctx->cqe.wr_id =3D wqe->hdr.wr_id; - comp_ctx->cqe.qp =3D qp_handle; - comp_ctx->cqe.opcode =3D IBV_WC_SEND; - sgid =3D rdma_rm_get_gid(&dev->rdma_dev_res, wqe->hdr.wr.ud.av.gid= _index); if (!sgid) { pr_dbg("Fail to get gid for idx %d\n", wqe->hdr.wr.ud.av.gid_i= ndex); @@ -182,6 +174,14 @@ int pvrdma_qp_send(PVRDMADev *dev, uint32_t qp_handle) return -EIO; } =20 + /* Prepare CQE */ + comp_ctx =3D g_malloc(sizeof(CompHandlerCtx)); + comp_ctx->dev =3D dev; + comp_ctx->cq_handle =3D qp->send_cq_handle; + comp_ctx->cqe.wr_id =3D wqe->hdr.wr_id; + comp_ctx->cqe.qp =3D qp_handle; + comp_ctx->cqe.opcode =3D IBV_WC_SEND; + rdma_backend_post_send(&dev->backend_dev, &qp->backend_qp, qp->qp_= type, (struct ibv_sge *)&wqe->sge[0], wqe->hdr.nu= m_sge, sgid_idx, sgid, --=20 2.17.1