patch 'net/ice: fix memory leak in raw pattern parse' has been queued to stable release 24.11.4

Kevin Traynor ktraynor at redhat.com
Fri Oct 31 15:33:24 CET 2025


Hi,

FYI, your patch has been queued to stable release 24.11.4

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/25. 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/954d1f68b522fdc9802252931e758fa592603edc

Thanks.

Kevin

---
>From 954d1f68b522fdc9802252931e758fa592603edc Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov at intel.com>
Date: Fri, 10 Oct 2025 14:13:20 +0100
Subject: [PATCH] net/ice: fix memory leak in raw pattern parse

[ upstream commit 3938eeec989181216ea3f9cc8eee931a2915ca5d ]

Currently, when parsing rte_flow raw type items, we allocate some
internal structures, but if errors happen down the line we just quit and
never free the memory we just allocated. Fix this by adding an error
cleanup section.

Fixes: 848de9572c83 ("net/ice: fix raw flow input pattern parsing")

Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
---
 drivers/net/ice/ice_fdir_filter.c | 28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
index 688f037d2e..990b355203 100644
--- a/drivers/net/ice/ice_fdir_filter.c
+++ b/drivers/net/ice/ice_fdir_filter.c
@@ -1864,5 +1864,5 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
 			uint16_t pkt_len = 0;
 			uint8_t tmp = 0;
-			int i, j;
+			int i, j, ret_val;
 
 			pkt_len = strlen((char *)(uintptr_t)raw_spec->pattern);
@@ -1919,17 +1919,20 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
 			pkt_len /= 2;
 
-			if (ice_parser_run(ad->psr, tmp_spec, pkt_len, &rslt))
-				return -rte_errno;
-
-			if (!tmp_mask)
-				return -rte_errno;
+			if (ice_parser_run(ad->psr, tmp_spec, pkt_len, &rslt)) {
+				ret_val = -rte_errno;
+				goto raw_error;
+			}
 
 			if (ice_parser_profile_init(&rslt, tmp_spec, tmp_mask,
-				pkt_len, ICE_BLK_FD, true, &filter->prof))
-				return -rte_errno;
+				pkt_len, ICE_BLK_FD, true, &filter->prof)) {
+				ret_val = -rte_errno;
+				goto raw_error;
+			}
 
 			u8 *pkt_buf = (u8 *)ice_malloc(&ad->hw, pkt_len + 1);
-			if (!pkt_buf)
-				return -ENOMEM;
+			if (!pkt_buf) {
+				ret_val = -ENOMEM;
+				goto raw_error;
+			}
 			rte_memcpy(pkt_buf, tmp_spec, pkt_len);
 			filter->pkt_buf = pkt_buf;
@@ -1942,4 +1945,9 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
 			rte_free(tmp_mask);
 			break;
+
+raw_error:
+			rte_free(tmp_spec);
+			rte_free(tmp_mask);
+			return ret_val;
 		}
 
-- 
2.51.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2025-10-31 13:53:54.711999972 +0000
+++ 0082-net-ice-fix-memory-leak-in-raw-pattern-parse.patch	2025-10-31 13:53:52.183523827 +0000
@@ -1 +1 @@
-From 3938eeec989181216ea3f9cc8eee931a2915ca5d Mon Sep 17 00:00:00 2001
+From 954d1f68b522fdc9802252931e758fa592603edc Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 3938eeec989181216ea3f9cc8eee931a2915ca5d ]
+
@@ -12 +13,0 @@
-Cc: stable at dpdk.org
@@ -17 +18 @@
- drivers/net/intel/ice/ice_fdir_filter.c | 28 ++++++++++++++++---------
+ drivers/net/ice/ice_fdir_filter.c | 28 ++++++++++++++++++----------
@@ -20,5 +21,5 @@
-diff --git a/drivers/net/intel/ice/ice_fdir_filter.c b/drivers/net/intel/ice/ice_fdir_filter.c
-index d593624792..9dfe5c02cb 100644
---- a/drivers/net/intel/ice/ice_fdir_filter.c
-+++ b/drivers/net/intel/ice/ice_fdir_filter.c
-@@ -1866,5 +1866,5 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
+index 688f037d2e..990b355203 100644
+--- a/drivers/net/ice/ice_fdir_filter.c
++++ b/drivers/net/ice/ice_fdir_filter.c
+@@ -1864,5 +1864,5 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -31 +32 @@
-@@ -1921,17 +1921,20 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1919,17 +1919,20 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
@@ -61 +62 @@
-@@ -1944,4 +1947,9 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,
+@@ -1942,4 +1945,9 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad,



More information about the stable mailing list