From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0108EA0545 for ; Mon, 20 Jun 2022 11:48:14 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EF57240150; Mon, 20 Jun 2022 11:48:13 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 81F8F427F5 for ; Mon, 20 Jun 2022 11:48:12 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655718492; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cTWXwMITjfvxwTVWMeHSuPQPD+/uQDAbHJ0jxkW7Ia4=; b=h8565lVv1HA/kZ1YviDyDUbcapGhG+tVkWOZS4DZVej9z8Z2APs8HgXzLwafQ67Wf/Efrt llBFX124YqrHWvYikL0UsYYiGc0GytuxNzngJ01tIUw9ekeckqQNq/IMNUxP6c0j6ZIb9M bFwgVJv3BkksPpf0kNwD6k2tI+FLrL4= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-224-KWmX5wFGMgOTLL4TPwgx_Q-1; Mon, 20 Jun 2022 05:48:07 -0400 X-MC-Unique: KWmX5wFGMgOTLL4TPwgx_Q-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9FCCB382C971; Mon, 20 Jun 2022 09:48:06 +0000 (UTC) Received: from rh.redhat.com (unknown [10.39.194.217]) by smtp.corp.redhat.com (Postfix) with ESMTP id 95771404E4DB; Mon, 20 Jun 2022 09:48:05 +0000 (UTC) From: Kevin Traynor To: Ke Zhang Cc: Yuying Zhang , Ferruh Yigit , dpdk stable Subject: patch 'app/testpmd: fix multicast address pool leak' has been queued to stable release 21.11.2 Date: Mon, 20 Jun 2022 10:47:40 +0100 Message-Id: <20220620094752.1027299-7-ktraynor@redhat.com> In-Reply-To: <20220620094752.1027299-1-ktraynor@redhat.com> References: <20220620094752.1027299-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 21.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 06/23/22. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/a9062fa2fc4e005036475a9161fe0ba38d896564 Thanks. Kevin --- >From a9062fa2fc4e005036475a9161fe0ba38d896564 Mon Sep 17 00:00:00 2001 From: Ke Zhang Date: Fri, 25 Mar 2022 08:35:55 +0000 Subject: [PATCH] app/testpmd: fix multicast address pool leak [ upstream commit 68629be3a622ee53cd5b40c8447ae9b083ff3f6c ] A multicast address pool is allocated for a port when using mcast_addr testpmd commands. When closing a port or stopping testpmd, this pool was not freed, resulting in a leak. This issue has been caught using ASan. Free this pool when closing the port. Error info as following: ERROR: LeakSanitizer: detected memory leaksDirect leak of 192 byte(s) 0 0x7f6a2e0aeffe in __interceptor_realloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dffe) 1 0x565361eb340f in mcast_addr_pool_extend ../app/test-pmd/config.c:5162 2 0x565361eb3556 in mcast_addr_pool_append ../app/test-pmd/config.c:5180 3 0x565361eb3aae in mcast_addr_add ../app/test-pmd/config.c:5243 Fixes: 8fff667578a7 ("app/testpmd: new command to add/remove multicast MAC addresses") Signed-off-by: Ke Zhang Acked-by: Yuying Zhang Acked-by: Ferruh Yigit --- app/test-pmd/config.c | 19 +++++++++++++++++++ app/test-pmd/testpmd.c | 1 + app/test-pmd/testpmd.h | 1 + 3 files changed, 21 insertions(+) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 3855a6809f..f8c058f204 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -5292,4 +5292,23 @@ mcast_addr_pool_remove(struct rte_port *port, uint32_t addr_idx) } +int +mcast_addr_pool_destroy(portid_t port_id) +{ + struct rte_port *port; + + if (port_id_is_invalid(port_id, ENABLED_WARN) || + port_id == (portid_t)RTE_PORT_ALL) + return -EINVAL; + port = &ports[port_id]; + + if (port->mc_addr_nb != 0) { + /* free the pool of multicast addresses. */ + free(port->mc_addr_pool); + port->mc_addr_pool = NULL; + port->mc_addr_nb = 0; + } + return 0; +} + static int eth_port_multicast_addr_list_set(portid_t port_id) diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 1c415b0209..214763d65b 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -3239,4 +3239,5 @@ close_port(portid_t pid) if (is_proc_primary()) { + mcast_addr_pool_destroy(pi); port_flow_flush(pi); port_flex_item_flush(pi); diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index 42db6b56df..04bc7ffbc2 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -918,4 +918,5 @@ int port_action_handle_query(portid_t port_id, uint32_t id); void update_age_action_context(const struct rte_flow_action *actions, struct port_flow *pf); +int mcast_addr_pool_destroy(portid_t port_id); int port_flow_destroy(portid_t port_id, uint32_t n, const uint32_t *rule); int port_flow_flush(portid_t port_id); -- 2.34.3 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-06-20 10:46:27.940808817 +0100 +++ 0007-app-testpmd-fix-multicast-address-pool-leak.patch 2022-06-20 10:46:27.782146829 +0100 @@ -1 +1 @@ -From 68629be3a622ee53cd5b40c8447ae9b083ff3f6c Mon Sep 17 00:00:00 2001 +From a9062fa2fc4e005036475a9161fe0ba38d896564 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 68629be3a622ee53cd5b40c8447ae9b083ff3f6c ] + @@ -28 +29,0 @@ -Cc: stable@dpdk.org @@ -40 +41 @@ -index 72d2606d19..d6caa1f0b2 100644 +index 3855a6809f..f8c058f204 100644 @@ -43 +44 @@ -@@ -6071,4 +6071,23 @@ mcast_addr_pool_remove(struct rte_port *port, uint32_t addr_idx) +@@ -5292,4 +5292,23 @@ mcast_addr_pool_remove(struct rte_port *port, uint32_t addr_idx) @@ -68 +69 @@ -index 4d51eb9576..9d6175e9a7 100644 +index 1c415b0209..214763d65b 100644 @@ -71 +72 @@ -@@ -3238,4 +3238,5 @@ close_port(portid_t pid) +@@ -3239,4 +3239,5 @@ close_port(portid_t pid) @@ -78 +79 @@ -index 6693813dda..dd34b025e6 100644 +index 42db6b56df..04bc7ffbc2 100644 @@ -81 +82 @@ -@@ -992,4 +992,5 @@ int port_action_handle_query(portid_t port_id, uint32_t id); +@@ -918,4 +918,5 @@ int port_action_handle_query(portid_t port_id, uint32_t id);