From patchwork Tue Feb 22 18:18:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Weiguo Li X-Patchwork-Id: 108041 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 BC8CBA034E; Tue, 22 Feb 2022 19:19:44 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A29E5411DB; Tue, 22 Feb 2022 19:19:12 +0100 (CET) Received: from out203-205-251-82.mail.qq.com (out203-205-251-82.mail.qq.com [203.205.251.82]) by mails.dpdk.org (Postfix) with ESMTP id DFC96411CB for ; Tue, 22 Feb 2022 19:19:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1645553944; bh=iQkeHM3yZV1xBLxhT3xXyuEjGvFRaoupb6q9Gs40vgI=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=h3kg4kTUjFJAgXOdlJlOW+CSVV71ZXySgsaBoxFgxAR54ksMiyJW4A4Rjm/ctgh2B TWjrahvlIh/ocoEAnKlqnYftz3ytgd5iUb1S0jqYirLZ9CRBhVjWeuXw6zu6P1kT85 FGxx1DZxDKT6/xE9sR8+MhGLgLVAtkAms+FOLg+g= Received: from localhost.localdomain ([111.193.130.237]) by newxmesmtplogicsvrszc6.qq.com (NewEsmtp) with SMTP id 49223207; Wed, 23 Feb 2022 02:18:18 +0800 X-QQ-mid: xmsmtpt1645553940tx4dp7kae Message-ID: X-QQ-XMAILINFO: Nwz8Cs33/LprsdqqqVMBtVZloJLxwJEstFF4ba7QnxdC6BJfSjFcLUc8NKF6tF ydYlOhzFoSf3g1tHX+E1538cf7APFE3BnxULrtB9C77g8r3UrluDuAXW/D55uO+y0sgP+Zzg13x8 7rLWJghFYxKlNyBu6h+qCql78fNOAIfYjO/SFFM6tT2U8JdhAfaJX1o8Z6xNr3bGRMCTcqxadiaK fMwsSDn8bb12nb75hgA+S1iPW6u6lDn/1tHrocp2ygsdh/cAyfCp28wFOmjfWQsBy53xGDzK6vRC 102PE8geXPkxpTLBLocrmBbmJ8x/kaBMpeZYph1RfZ2SyhviLNdJtbRTwLD3QkhPXLWlrQNcVw2f 0J5ew+mwuv6viL0RUWMhRSE204gTQ+A7r4ZwxwaSOA1z0yHoVyvRd/vGTrG3LZvK7cZ2HjrKYWEG X8f8rOsAD6yIRNGZltxb0m/4Prf/iYSJocoQkyKVXnd2q4pocIHroH0qi5lMiwgBDRWI+//StNgR Lnm8MavL90zlMxPFnzk5G6MSwJ4y+fFACUF2hy8mTkRaUjvqPNYdkIDv4IaJNOj+fmzgsF+2wgvm 2Ae0NpEORIa5wPE0K1X4XKTmoq0K8pHPZU/xVYqP5B4IJLipqcaqf5c+2lr1gwm3/+91BHa73IlR VS4+vYONI1amJGTuZaSwyGj7EMYiWUTC9Ig9DYNmUayesNc5MQMRx6rDGBV7/cyyLm54sCSf8CWF YdHENx+B1y4jf8rV7UVySCVaZfqoq3b1qYsA9mgDiG7QpZtuDwQEFl6nPx2687gnuH7MUlk9Ix93 bshSAyKAGWNTEVvCPp7eC9APauVM9pyQdHMOiu0IJe1PpcTMd+k9spjUNEHVwQElOmpoUsFjikOC KiH0CJKxLuBL5hYJ2eBg+HFrrCHu5eCQ== 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 10/20] net/failsafe: fix a memory leak in error handling Date: Wed, 23 Feb 2022 02:18:08 +0800 X-OQ-MSGID: <1667cbd78444bb38f61339fde94a6c995a34a467.1645551559.git.liwg06@foxmail.com> 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 When failed at 'rte_intr_efd_enable()', function returned and 'rxq' is not freed. So free 'rxq' in error handling to avoid a memory leak. We can't not use 'goto free_rxq' instead since 'rxq' has not assigned to 'dev->data->rx_queues[rx_queue_id]', thus 'fs_rx_queue_release(dev,...)' will not work in this case. Fixes: 9e0360aebf236d ("net/failsafe: register as Rx interrupt mode") Signed-off-by: Weiguo Li --- drivers/net/failsafe/failsafe_ops.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c index 55e21d635c..4d4e2b248f 100644 --- a/drivers/net/failsafe/failsafe_ops.c +++ b/drivers/net/failsafe/failsafe_ops.c @@ -444,6 +444,7 @@ fs_rx_queue_setup(struct rte_eth_dev *dev, rxq->sdev = PRIV(dev)->subs; ret = rte_intr_efd_enable(intr_handle, 1); if (ret < 0) { + rte_free(rxq); fs_unlock(dev, 0); return ret; }