From patchwork Tue Feb 22 18:18:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Weiguo Li X-Patchwork-Id: 108043 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 BF781A034E; Tue, 22 Feb 2022 19:19:55 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 672D9411EE; Tue, 22 Feb 2022 19:19:20 +0100 (CET) Received: from out203-205-251-72.mail.qq.com (out203-205-251-72.mail.qq.com [203.205.251.72]) by mails.dpdk.org (Postfix) with ESMTP id E656C40DF6 for ; Tue, 22 Feb 2022 19:19:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1645553954; bh=ZH6CClkNDEQtuN85rKnNN4HUnBHfNN194X9JjalKC8Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=nPc6bntAjbmiFdZhzNqcRipg9SzF6fJzkAEChnQP9eDgn3KiggorB1sqoq3J3+hsK bMmPOATlp21y0GBh01oTaRpiEaw66vIAkOES1fgHvt+gsJ3nEI25gN7wXyElfeWvm7 HD9UA3oI/S4g4bWd9A3SlhwofHgKwbQ+GTPweuys= 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: xmsmtpt1645553950t64c654so Message-ID: X-QQ-XMAILINFO: M3vv73qU6a4ul8qWHlI6vJ3ARnhbWKAR/fRfFBij+WoB0K8N3kN4tcUFyp6RKM CT2hbHwohlcxdbqHPaNBot+yTbPuonUeoyt6w4J+4uGAXOXgDK+wE2l57UG9/aXjrywtUpea4CCW lnRDE8xPvdNaaFQXFPXNsY2SZfY47Mh5L3WE5hNrVFfHTm10asYTLvqhP0JnbMA+cL1B0cnFLtPr 6bqJm45cfWHOwMPs2n29RjBXKUkVoooUo0vnyIfFizOx5CsK+jOfXyqO9osPFldcqZZvlZmkA20m QAt2zFOuUvHSx7vwe/vMXI+p+G7Zothha57+p36PTqoXID9Bqbvntm+qyVfQzOSSKCUjxJjIx6I0 6OxU4kmJEX9xMqZOJwVN17aNZ48ug0iDF9dO6EUVtvA18g81tqYGYoFibDfxevE6a7IFfSNVvWRL xRYt6nKOYI9IZdBdmV6omTyXvX/FIdyztafNuWeEBCTQWcpdjFHZlYHH6f/CdfgR//ObdzkzpcND axuxKInfPT5j9oCaL+blyhzxKyKFPocouLAEQS9nHnrwADHDHU6MorH1mpN7f4Dbc08CAenPxzZd ZQBlWYvMJSWztD8fxszKsmR2uXg2ETA1/pcq4Oblxt/CA6r2sgQpTqh9qYYtBufps+vPBcDzugrw iAV9zV2Vf1X6iiPjnlzIBZLdI2kzYBsbKGg439ehbrpBIFCRMJfxSj4AXVmFdMv79f28lRqAKilj K1p8Hy8176esvjDxTs5fUoys6AH4eqspEm1SS1V8DyqomPWE2NqsA8sZ46Un8u+/1qoCZdg5ubhP cLr/wrAoDOr5dgYpDspLrHsjHyub0Zj9lyM7/xtVLoKQGsdapL1aCNcDC8vZ6Xo5KuwyYa0+Ueig == 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 13/20] net/ice: fix memory leaks in error handlings Date: Wed, 23 Feb 2022 02:18:11 +0800 X-OQ-MSGID: <27cce613aeff899ff9b9df646a185faf901f9073.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 The function release 'pkt_buf' and 'msk_buf' when successful. In some error handlings, 'pkt_buf' and 'msk_buf' were not freed leads to memory leaks. To fix it without introducing code redundancy, add and make use of an 'error' lable to do the clean ups for 'pkt_buf' and 'msk_buf'. Fixes: 1b9c68120a1c50 ("net/ice: enable protocol agnostic flow offloading in RSS") Signed-off-by: Weiguo Li --- drivers/net/ice/ice_hash.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index afbb357fa3..aed256d57c 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -658,7 +658,7 @@ ice_hash_parse_raw_pattern(struct ice_adapter *ad, uint8_t spec_len, pkt_len; uint8_t tmp_val = 0; uint8_t tmp_c = 0; - int i, j; + int i, j, ret = 0; raw_spec = item->spec; raw_mask = item->mask; @@ -675,9 +675,10 @@ ice_hash_parse_raw_pattern(struct ice_adapter *ad, return -ENOMEM; msk_buf = rte_zmalloc(NULL, pkt_len, 0); - if (!msk_buf) - return -ENOMEM; - + if (!msk_buf) { + ret = -ENOMEM; + goto exit; + } /* convert string to int array */ for (i = 0, j = 0; i < spec_len; i += 2, j++) { tmp_c = raw_spec->pattern[i]; @@ -713,21 +714,28 @@ ice_hash_parse_raw_pattern(struct ice_adapter *ad, msk_buf[j] = tmp_val * 16 + tmp_c - '0'; } - if (ice_parser_create(&ad->hw, &psr)) - return -rte_errno; - if (ice_parser_run(psr, pkt_buf, pkt_len, &rslt)) - return -rte_errno; + if (ice_parser_create(&ad->hw, &psr)) { + ret = -rte_errno; + goto exit; + } + if (ice_parser_run(psr, pkt_buf, pkt_len, &rslt)) { + ret = -rte_errno; + goto exit; + } ice_parser_destroy(psr); if (ice_parser_profile_init(&rslt, pkt_buf, msk_buf, - pkt_len, ICE_BLK_RSS, true, &prof)) - return -rte_errno; + pkt_len, ICE_BLK_RSS, true, &prof)) { + ret = -rte_errno; + goto exit; + } rte_memcpy(&meta->raw.prof, &prof, sizeof(prof)); +exit: rte_free(pkt_buf); rte_free(msk_buf); - return 0; + return ret; } static void