From patchwork Tue Feb 22 18:28:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Weiguo Li X-Patchwork-Id: 108049 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 65C46A034E; Tue, 22 Feb 2022 19:28:58 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E551B40E64; Tue, 22 Feb 2022 19:28:57 +0100 (CET) Received: from out203-205-221-191.mail.qq.com (out203-205-221-191.mail.qq.com [203.205.221.191]) by mails.dpdk.org (Postfix) with ESMTP id 6EFFB40DF4 for ; Tue, 22 Feb 2022 19:28:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1645554532; bh=CPRhVBlymra7WqFS6/cR0CwzotTIj2OQy8AFrksQdlk=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=kmYrt2NBZUJ8sil3zFHjzfnM3Gz6HsV3X2lbXZodSIML2h+fUd0PYOR/4uiSkbcUe eAS0Gb4SrPY/mExOMX9yw/2qBILWv8YWX6fR/H3uC1lnYrZaR/LFiTqKpj3awJeNhf ZbaDrEnSZ8lqBS9p8UZCPA6IAjVv8b2ynTZ/wvQc= Received: from localhost.localdomain ([111.193.130.237]) by newxmesmtplogicsvrszb6.qq.com (NewEsmtp) with SMTP id 72532A7A; Wed, 23 Feb 2022 02:28:37 +0800 X-QQ-mid: xmsmtpt1645554517tzrcw8vah Message-ID: X-QQ-XMAILINFO: Obaoxo7U3b2J174+EBmSh1lS6iXqal+9Enhw98t7r1HTt9RkxAK/6YQp7jnOZI yrc/FRLa9UvMQi6PMf22PfM7XeMPuthRh0VUvizy5oAAOYRpvKwdbiwXqOpCeU15y2Y7DIAKS28e 1/gGY4gWK2KTUrX2qkRYEa78Nzqk2Wwm1kuYsrTeThqQVs274xA9Rs3ue3+gXTSnT2zPzkwC48Sy 0yo0A6LLAWtfruyuwN370ZRGHRmEiauuyyDQFo9xRmysAIKmbLPPg7Kj+iZGYzrWTTkuTXTtWsRb NE0N/TW/0LbGf1mQKViuAYCuMAIaLBQNwvUqhFAux0a+4/MF14pwbmiIzR0QpX5ofiEtbDmg3v1B f++mjDAh3Qy8jWGaBSnHE/HacikYC7oM9R84uthzTDMFLSfiYppxJEaN3+tu5L4Y2rU7jZ+wzGbG vKfS+OdaBXYFDr5fSNIE3BfHHIY/8TXWYdmV0GkDilmdIyAZB9B52FqA7+IiPN4PQGbX4hhmN3HY VwL7650AJB6t10z4gWk6fZIUU2g9zGSKa15XIBeYUfv9xPb3DyeGjot9Y+/UUGHSVbIcod5NII9D BAvpCurA6saOiwN8B9JEenVkiNNNDxQFARRq/pHrql/SfORrj52fEA9kUT4TxQ05q46FvEJRmtAF IpSYDQPOZQLTF9Q5ATbEBXNhVSi2mbqldie3FtKLTTJFE1DXkj1orBWpYGAEGm9oBnN3RS+oDeE4 FGPimYXhhtEDHC11dpwWF691GLlhNu2hnrO8uTiIJuLSkW4jzuCbW9CBy7kZdp5z8SvhZ5EcFkVZ 1nCfPyEYdVTC82oWCsu0nmC9oAUYlY+j0RxchWgsbT4EkhbYH3ZoTXxoc2N3+lnyR4zxpciicXfl WzSKiqzp8NPHO4udvJgGJHbGf88n/s7SA87Nq2Vcsg From: Weiguo Li To: dev@dpdk.org Cc: adypodoman@gmail.com, xiaoyun.li@intel.com, tianfei.zhang@intel.com, bruce.richardson@intel.com, ivan.malov@oktetlabs.ru, jgrajcia@cisco.com, hkalra@marvell.com, ying.a.wang@intel.com, ting.xu@intel.com, simei.su@intel.com, qiming.yang@intel.com, motih@mellanox.com, shreyansh.jain@nxp.com, skoteshwar@marvell.com, stephen@networkplumber.org, kalesh-anakkur.purayil@broadcom.com, somnath.kotur@broadcom.com, declan.doherty@intel.com, gakhil@marvell.com, nicolas.chautru@intel.com Subject: [PATCH 19/20] raw/ntb: fix some memory leaks in error handlings Date: Wed, 23 Feb 2022 02:28:36 +0800 X-OQ-MSGID: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 1) in ntb_rxq_setup(): When 'rxq_conf->rx_mp' validation failed and return, the memory to 'rxq' is leaked. We can move the validation ahead the allocation for 'rxq' to avoid it. 2) in ntb_txq_setup(): The memory 'txq' is stored to 'hw->tx_queues[qp_id]' at the end of the function when successful. When the validation failed then function returned early, 'rxq' is not released which leads to a memory leak. Fixes: c39d1e082a4b ("raw/ntb: setup queues") Signed-off-by: Weiguo Li --- drivers/raw/ntb/ntb.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/raw/ntb/ntb.c b/drivers/raw/ntb/ntb.c index f5e773c53b..532c5141f0 100644 --- a/drivers/raw/ntb/ntb.c +++ b/drivers/raw/ntb/ntb.c @@ -314,6 +314,10 @@ ntb_rxq_setup(struct rte_rawdev *dev, if (conf_size != sizeof(*rxq_conf)) return -EINVAL; + if (rxq_conf->rx_mp == NULL) { + NTB_LOG(ERR, "Invalid null mempool pointer."); + return -EINVAL; + } /* Allocate the rx queue data structure */ rxq = rte_zmalloc_socket("ntb rx queue", sizeof(struct ntb_rx_queue), @@ -325,10 +329,6 @@ ntb_rxq_setup(struct rte_rawdev *dev, return -ENOMEM; } - if (rxq_conf->rx_mp == NULL) { - NTB_LOG(ERR, "Invalid null mempool pointer."); - return -EINVAL; - } rxq->nb_rx_desc = rxq_conf->nb_desc; rxq->mpool = rxq_conf->rx_mp; rxq->port_id = dev->dev_id; @@ -445,6 +445,7 @@ ntb_txq_setup(struct rte_rawdev *dev, NTB_LOG(ERR, "tx_free_thresh must be less than nb_desc - 3. " "(tx_free_thresh=%u qp_id=%u)", txq->tx_free_thresh, qp_id); + ntb_txq_release(txq); return -EINVAL; }