patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Maayan Kashani <mkashani@nvidia.com>
Cc: Bing Zhao <bingz@nvidia.com>, dpdk stable <stable@dpdk.org>
Subject: patch 'net/mlx5: fix crash on flow rule destruction' has been queued to stable release 24.11.4
Date: Fri, 21 Nov 2025 11:21:19 +0000	[thread overview]
Message-ID: <20251121112128.485623-95-ktraynor@redhat.com> (raw)
In-Reply-To: <20251121112128.485623-1-ktraynor@redhat.com>

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/26/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/f9ba4e61a235f07e6f4ea92dadbb24c0c62213fc

Thanks.

Kevin

---
From f9ba4e61a235f07e6f4ea92dadbb24c0c62213fc Mon Sep 17 00:00:00 2001
From: Maayan Kashani <mkashani@nvidia.com>
Date: Mon, 17 Nov 2025 09:15:36 +0200
Subject: [PATCH] net/mlx5: fix crash on flow rule destruction
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[ upstream commit ad7db900a05397773b812e76655918086b07ab36 ]

The mlx5_ipool_free() function was called with a NULL pool pointer
during HW flow destruction, causing a segmentation fault. This occurred
when flow creation failed and the cleanup path attempted to free
resources from an uninitialized flow pool.

The crash happened in the following scenario:
1. During device start, a default NTA copy action flow is created
2. If the flow creation fails, mlx5_flow_hw_list_destroy() is called
3. In hw_cmpl_flow_update_or_destroy(), table->flow pool could be NULL
4. mlx5_ipool_free(table->flow, flow->idx) was called without checking
   if table->flow is NULL
5. Inside mlx5_ipool_free(), accessing pool->cfg.per_core_cache caused
   a segmentation fault due to NULL pointer dereference

The fix adds two layers of protection,
1. Add NULL check for table->flow before calling mlx5_ipool_free() in
   hw_cmpl_flow_update_or_destroy(), consistent with the existing check
   for table->resource on the previous line
2. Add NULL check for pool parameter in mlx5_ipool_free() as a defensive
   measure to prevent similar crashes in other code paths

The fix also renames the ‘flow’ field in rte_flow_template_table
to ‘flow_pool’ for better code readability.

Stack trace of the fault:
  mlx5_ipool_free (pool=0x0) at mlx5_utils.c:753
  hw_cmpl_flow_update_or_destroy at mlx5_flow_hw.c:4481
  mlx5_flow_hw_destroy at mlx5_flow_hw.c:14219
  mlx5_flow_hw_list_destroy at mlx5_flow_hw.c:14279
  flow_hw_list_create at mlx5_flow_hw.c:14415
  mlx5_flow_start_default at mlx5_flow.c:8263
  mlx5_dev_start at mlx5_trigger.c:1420

Fixes: 27d171b88031 ("net/mlx5: abstract flow action and enable reconfigure")

Signed-off-by: Maayan Kashani <mkashani@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow.h    |  2 +-
 drivers/net/mlx5/mlx5_flow_hw.c | 25 +++++++++++++------------
 drivers/net/mlx5/mlx5_utils.c   |  2 +-
 3 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index ee6ad206b8..264d4ad60f 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -1702,5 +1702,5 @@ struct rte_flow_template_table {
 	/* Action templates bind to the table. */
 	struct mlx5_hw_action_template ats[MLX5_HW_TBL_MAX_ACTION_TEMPLATE];
-	struct mlx5_indexed_pool *flow; /* The table's flow ipool. */
+	struct mlx5_indexed_pool *flow_pool; /* The table's flow ipool. */
 	struct rte_flow_hw_aux *flow_aux; /**< Auxiliary data stored per flow. */
 	struct mlx5_indexed_pool *resource; /* The table's resource ipool. */
diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 9bd237b82a..a1274c93f8 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -3918,5 +3918,5 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
 			return NULL;
 	}
-	flow = mlx5_ipool_malloc(table->flow, &flow_idx);
+	flow = mlx5_ipool_malloc(table->flow_pool, &flow_idx);
 	if (!flow) {
 		rte_errno = ENOMEM;
@@ -4007,5 +4007,5 @@ error:
 		mlx5_ipool_free(table->resource, res_idx);
 	if (flow_idx)
-		mlx5_ipool_free(table->flow, flow_idx);
+		mlx5_ipool_free(table->flow_pool, flow_idx);
 	if (sub_error.cause != RTE_FLOW_ERROR_TYPE_NONE && error != NULL)
 		*error = sub_error;
@@ -4457,5 +4457,6 @@ hw_cmpl_flow_update_or_destroy(struct rte_eth_dev *dev,
 			if (table->resource)
 				mlx5_ipool_free(table->resource, res_idx);
-			mlx5_ipool_free(table->flow, flow->idx);
+			if (table->flow_pool)
+				mlx5_ipool_free(table->flow_pool, flow->idx);
 		}
 	}
@@ -4745,5 +4746,5 @@ flow_hw_q_flow_flush(struct rte_eth_dev *dev,
 		if (!tbl->cfg.external)
 			continue;
-		MLX5_IPOOL_FOREACH(tbl->flow, fidx, flow) {
+		MLX5_IPOOL_FOREACH(tbl->flow_pool, fidx, flow) {
 			if (flow_hw_async_flow_destroy(dev,
 						MLX5_DEFAULT_FLUSH_QUEUE,
@@ -5051,6 +5052,6 @@ flow_hw_table_create(struct rte_eth_dev *dev,
 	tbl->cfg = *table_cfg;
 	/* Allocate flow indexed pool. */
-	tbl->flow = mlx5_ipool_create(&cfg);
-	if (!tbl->flow)
+	tbl->flow_pool = mlx5_ipool_create(&cfg);
+	if (!tbl->flow_pool)
 		goto error;
 	/* Allocate table of auxiliary flow rule structs. */
@@ -5200,6 +5201,6 @@ error:
 		if (tbl->flow_aux)
 			mlx5_free(tbl->flow_aux);
-		if (tbl->flow)
-			mlx5_ipool_destroy(tbl->flow);
+		if (tbl->flow_pool)
+			mlx5_ipool_destroy(tbl->flow_pool);
 		mlx5_free(tbl);
 	}
@@ -5422,8 +5423,8 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
 	if (table->resource)
 		mlx5_ipool_flush_cache(table->resource);
-	mlx5_ipool_flush_cache(table->flow);
+	mlx5_ipool_flush_cache(table->flow_pool);
 	/* Check if ipool has allocated objects. */
 	if (table->refcnt ||
-	    mlx5_ipool_get_next(table->flow, &fidx) ||
+	    mlx5_ipool_get_next(table->flow_pool, &fidx) ||
 	    (table->resource && mlx5_ipool_get_next(table->resource, &ridx))) {
 		DRV_LOG(WARNING, "Table %p is still in use.", (void *)table);
@@ -5455,5 +5456,5 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
 		mlx5_ipool_destroy(table->resource);
 	mlx5_free(table->flow_aux);
-	mlx5_ipool_destroy(table->flow);
+	mlx5_ipool_destroy(table->flow_pool);
 	mlx5_free(table);
 	return 0;
@@ -14937,5 +14938,5 @@ flow_hw_table_resize(struct rte_eth_dev *dev,
 					  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
 					  table, "shrinking table is not supported");
-	ret = mlx5_ipool_resize(table->flow, nb_flows, error);
+	ret = mlx5_ipool_resize(table->flow_pool, nb_flows, error);
 	if (ret)
 		return ret;
diff --git a/drivers/net/mlx5/mlx5_utils.c b/drivers/net/mlx5/mlx5_utils.c
index d882af6047..a6db03fcc4 100644
--- a/drivers/net/mlx5/mlx5_utils.c
+++ b/drivers/net/mlx5/mlx5_utils.c
@@ -588,5 +588,5 @@ mlx5_ipool_free(struct mlx5_indexed_pool *pool, uint32_t idx)
 	uint32_t entry_idx;
 
-	if (!idx)
+	if (!pool || !idx)
 		return;
 	if (pool->cfg.per_core_cache) {
-- 
2.51.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2025-11-21 11:05:12.537156034 +0000
+++ 0095-net-mlx5-fix-crash-on-flow-rule-destruction.patch	2025-11-21 11:05:09.643201937 +0000
@@ -1 +1 @@
-From ad7db900a05397773b812e76655918086b07ab36 Mon Sep 17 00:00:00 2001
+From f9ba4e61a235f07e6f4ea92dadbb24c0c62213fc Mon Sep 17 00:00:00 2001
@@ -8,0 +9,2 @@
+[ upstream commit ad7db900a05397773b812e76655918086b07ab36 ]
+
@@ -43 +44,0 @@
-Cc: stable@dpdk.org
@@ -54 +55 @@
-index d7c9d4d0ea..218b55d536 100644
+index ee6ad206b8..264d4ad60f 100644
@@ -57 +58 @@
-@@ -1745,5 +1745,5 @@ struct rte_flow_template_table {
+@@ -1702,5 +1702,5 @@ struct rte_flow_template_table {
@@ -65 +66 @@
-index c60f836de4..f8995b53cc 100644
+index 9bd237b82a..a1274c93f8 100644
@@ -68 +69 @@
-@@ -3959,5 +3959,5 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
+@@ -3918,5 +3918,5 @@ flow_hw_async_flow_create_generic(struct rte_eth_dev *dev,
@@ -75 +76 @@
-@@ -4049,5 +4049,5 @@ error:
+@@ -4007,5 +4007,5 @@ error:
@@ -82 +83 @@
-@@ -4499,5 +4499,6 @@ hw_cmpl_flow_update_or_destroy(struct rte_eth_dev *dev,
+@@ -4457,5 +4457,6 @@ hw_cmpl_flow_update_or_destroy(struct rte_eth_dev *dev,
@@ -90 +91 @@
-@@ -4787,5 +4788,5 @@ flow_hw_q_flow_flush(struct rte_eth_dev *dev,
+@@ -4745,5 +4746,5 @@ flow_hw_q_flow_flush(struct rte_eth_dev *dev,
@@ -97 +98 @@
-@@ -5109,6 +5110,6 @@ flow_hw_table_create(struct rte_eth_dev *dev,
+@@ -5051,6 +5052,6 @@ flow_hw_table_create(struct rte_eth_dev *dev,
@@ -106 +107 @@
-@@ -5265,6 +5266,6 @@ error:
+@@ -5200,6 +5201,6 @@ error:
@@ -115 +116 @@
-@@ -5496,8 +5497,8 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
+@@ -5422,8 +5423,8 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
@@ -126 +127 @@
-@@ -5529,5 +5530,5 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
+@@ -5455,5 +5456,5 @@ flow_hw_table_destroy(struct rte_eth_dev *dev,
@@ -133 +134 @@
-@@ -15228,5 +15229,5 @@ flow_hw_table_resize(struct rte_eth_dev *dev,
+@@ -14937,5 +14938,5 @@ flow_hw_table_resize(struct rte_eth_dev *dev,
@@ -141 +142 @@
-index cba8cc3f49..defcf80dd7 100644
+index d882af6047..a6db03fcc4 100644
@@ -144 +145 @@
-@@ -749,5 +749,5 @@ mlx5_ipool_free(struct mlx5_indexed_pool *pool, uint32_t idx)
+@@ -588,5 +588,5 @@ mlx5_ipool_free(struct mlx5_indexed_pool *pool, uint32_t idx)


  parent reply	other threads:[~2025-11-21 11:24 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-21 11:19 patch 'test/hash: check memory allocation' " Kevin Traynor
2025-11-21 11:19 ` patch 'dmadev: fix debug build with tracepoints' " Kevin Traynor
2025-11-21 11:19 ` patch 'bus/cdx: fix device name in probing error message' " Kevin Traynor
2025-11-21 11:19 ` patch 'bus/cdx: fix release in probing for secondary process' " Kevin Traynor
2025-11-21 11:19 ` patch 'buildtools/pmdinfogen: fix warning with python 3.14' " Kevin Traynor
2025-11-21 11:19 ` patch 'net/iavf: fix build with clang 21' " Kevin Traynor
2025-11-21 11:19 ` patch 'test: " Kevin Traynor
2025-11-21 11:19 ` patch 'app/eventdev: " Kevin Traynor
2025-11-21 11:19 ` patch 'eventdev/crypto: " Kevin Traynor
2025-11-21 11:19 ` patch 'rawdev: " Kevin Traynor
2025-11-21 11:19 ` patch 'vdpa/mlx5: remove unused constant' " Kevin Traynor
2025-11-21 11:19 ` patch 'crypto/mlx5: remove unused constants' " Kevin Traynor
2025-11-21 11:19 ` patch 'regex/mlx5: remove useless " Kevin Traynor
2025-11-21 11:19 ` patch 'common/mlx5: " Kevin Traynor
2025-11-21 11:19 ` patch 'net/mlx5: " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: remove unused macros' " Kevin Traynor
2025-11-21 11:20 ` patch 'doc: fix NVIDIA bifurcated driver presentation link' " Kevin Traynor
2025-11-21 11:20 ` patch 'app/dma-perf: fix use after free' " Kevin Traynor
2025-11-21 11:20 ` patch 'app/dma-perf: check buffer size' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/vmxnet3: disable RSS for single queue for ESX8.0+' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/dpaa: fix resource leak' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix checksum error counter' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/ngbe: " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: reduce memory size of ring descriptors' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/ngbe: " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix VF Rx buffer size in config register' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: remove duplicate Tx queue assignment' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: add device arguments for FDIR' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix maximum number of FDIR filters' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR mode clearing' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR drop action for L4 match packets' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR filter for SCTP tunnel' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: filter FDIR match flex bytes for " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR rule raw relative for L3 packets' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: fix FDIR input mask' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: switch to FDIR when ntuple filter is full' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/txgbe: remove unsupported flow action mark' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/nfp: fix metering cleanup' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/bonding: fix MAC address propagation in 802.3ad mode' " Kevin Traynor
2025-11-21 11:20 ` patch 'app/testpmd: fix DCB Tx port' " Kevin Traynor
2025-11-21 11:20 ` patch 'app/testpmd: fix DCB Rx queues' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/e1000/base: fix crash on init with GCC 13' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/fm10k: fix build with GCC 16' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx4: fix unnecessary comma' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix unnecessary commas' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: store MTU at Rx queue allocation time' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix indirect RSS action hash' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: remove counter alignment' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix external queues access' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix modify field action restriction' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix meter mark allocation' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix indirect meter index leak' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/mlx5: fix error reporting on masked indirect actions' " Kevin Traynor
2025-11-21 11:20 ` patch 'vhost: fix external buffer in VDUSE' " Kevin Traynor
2025-11-21 11:20 ` patch 'net: fix L2 length for GRE packets' " Kevin Traynor
2025-11-21 11:20 ` patch 'graph: fix xstats description allocation' " Kevin Traynor
2025-11-21 11:20 ` patch 'graph: fix updating edge with active graph' " Kevin Traynor
2025-11-21 11:20 ` patch 'app/pdump: remove hard-coded memory channels' " Kevin Traynor
2025-11-21 11:20 ` patch 'pdump: handle primary process exit' " Kevin Traynor
2025-11-21 11:20 ` patch 'telemetry: make socket handler typedef private' " Kevin Traynor
2025-11-21 11:20 ` patch 'usertools/telemetry: fix exporter default IP binding' " Kevin Traynor
2025-11-21 11:20 ` patch 'examples/l3fwd-power: fix telemetry command registration' " Kevin Traynor
2025-11-21 11:20 ` patch 'lib: fix backticks matching in Doxygen comments' " Kevin Traynor
2025-11-21 11:20 ` patch 'mcslock: fix memory ordering' " Kevin Traynor
2025-11-21 15:22   ` Wathsala Vithanage
2025-11-21 11:20 ` patch 'net/axgbe: fix build with GCC 16' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/dpaa2: fix duplicate call of close' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/dpaa2: clear active VDQ state when freeing Rx queues' " Kevin Traynor
2025-11-21 11:20 ` patch 'app/testpmd: fix flex item link parsing' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/ixgbe/base: fix PF link state request size' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/ice: fix path selection for QinQ Tx offload' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/ice: fix statistics' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/idpf: fix queue setup with TSO offload' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/iavf: fix check for PF Rx timestamp support' " Kevin Traynor
2025-11-21 11:20 ` patch 'net/iavf: fix Rx timestamp validity check' " Kevin Traynor
2025-11-21 23:41   ` Jacob Keller
2025-11-21 11:20 ` patch 'common/cnxk: fix max number of SQB buffers in clean up' " Kevin Traynor
2025-11-21 11:21 ` patch 'common/cnxk: fix null SQ access' " Kevin Traynor
2025-11-21 11:21 ` patch 'common/cnxk: fix format specifier for bandwidth profile ID' " Kevin Traynor
2025-11-21 11:21 ` patch 'common/cnxk: fix NIX Rx inject enabling' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/cnxk: fix Rx inject LF' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/cnxk: fix default meter pre-color' " Kevin Traynor
2025-11-21 11:21 ` patch 'crypto/qat: fix CCM request descriptor hash state size' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/dpaa2: remove ethdev pointer from bus device' " Kevin Traynor
2025-11-21 11:21 ` patch 'app/flow-perf: fix rules array length' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix spurious CPU wakeups' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix IPv6 DSCP offset in HWS sync API' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix send to kernel action resources release' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: release representor interrupt handler' " Kevin Traynor
2025-11-21 11:21 ` patch 'common/mlx5: release unused mempool entries' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5/hws: fix buddy memory allocation' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix uninitialized variable' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix flow tag indexes support on root table' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5/hws: fix flow rule hash capability' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: fix null dereference in modify header' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5: skip Rx control flow tables in isolated mode' " Kevin Traynor
2025-11-21 11:21 ` Kevin Traynor [this message]
2025-11-21 11:21 ` patch 'net/mlx5: move auxiliary data inline' " Kevin Traynor
2025-11-21 11:21 ` patch 'net/mlx5/windows: fix match criteria in flow creation' " Kevin Traynor
2025-11-21 11:21 ` patch 'net: fix IPv6 link local compliance with RFC 4291' " Kevin Traynor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251121112128.485623-95-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=bingz@nvidia.com \
    --cc=mkashani@nvidia.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).