net/mlx5: fix flow null ops seg fault

Message ID 20250214100545.413991-1-ktraynor@redhat.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers
Series net/mlx5: fix flow null ops seg fault |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/intel-Functional success Functional PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-marvell-Functional success Functional Testing PASS
ci/github-robot: build success github build: passed
ci/iol-sample-apps-testing success Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-compile-amd64-testing success Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS

Commit Message

Kevin Traynor Feb. 14, 2025, 10:05 a.m. UTC
flow null driver ops may get selected and try to call .list_create
causing a seg fault.

Full details and back traces in bugzilla.

Add a null ops implementation for .list_create.

Bugzilla ID: 1661
Fixes: e38776c36c8a ("net/mlx5: introduce HWS for non-template flow API")
Cc: stable@dpdk.org

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
---
 drivers/net/mlx5/mlx5_flow.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
  

Comments

Dariusz Sosnowski Feb. 18, 2025, 11:04 a.m. UTC | #1
> -----Original Message-----
> From: Kevin Traynor <ktraynor@redhat.com>
> Sent: Friday, February 14, 2025 11:06
> To: dev@dpdk.org
> Cc: Dariusz Sosnowski <dsosnowski@nvidia.com>; Maayan Kashani
> <mkashani@nvidia.com>; Raslan Darawsheh <rasland@nvidia.com>; Ori Kam
> <orika@nvidia.com>; Kevin Traynor <ktraynor@redhat.com>; stable@dpdk.org
> Subject: [PATCH] net/mlx5: fix flow null ops seg fault
> 
> External email: Use caution opening links or attachments
> 
> 
> flow null driver ops may get selected and try to call .list_create causing a seg fault.
> 
> Full details and back traces in bugzilla.
> 
> Add a null ops implementation for .list_create.
> 
> Bugzilla ID: 1661
> Fixes: e38776c36c8a ("net/mlx5: introduce HWS for non-template flow API")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Kevin Traynor <ktraynor@redhat.com>

For segfault fix:

Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>

Regarding why null ops where selected here, let's continue on Bugzilla.

Best regards,
Dariusz Sosnowski
  
Raslan Darawsheh Feb. 23, 2025, 1:04 p.m. UTC | #2
Hi,

From: Kevin Traynor <ktraynor@redhat.com>
Sent: Friday, February 14, 2025 12:05 PM
To: dev@dpdk.org
Cc: Dariusz Sosnowski; Maayan Kashani; Raslan Darawsheh; Ori Kam; Kevin Traynor; stable@dpdk.org
Subject: [PATCH] net/mlx5: fix flow null ops seg fault

flow null driver ops may get selected and try to call .list_create
causing a seg fault.

Full details and back traces in bugzilla.

Add a null ops implementation for .list_create.

Bugzilla ID: 1661
Fixes: e38776c36c8a ("net/mlx5: introduce HWS for non-template flow API")
Cc: stable@dpdk.org

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>

Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh
  

Patch

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index a2ee237841..3fbe89a9d4 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -4032,4 +4032,18 @@  mlx5_flow_validate_item_nsh(struct rte_eth_dev *dev,
 }
 
+static uintptr_t
+flow_null_list_create(struct rte_eth_dev *dev __rte_unused,
+		      enum mlx5_flow_type type __rte_unused,
+		      const struct rte_flow_attr *attr __rte_unused,
+		      const struct rte_flow_item items[] __rte_unused,
+		      const struct rte_flow_action actions[] __rte_unused,
+		      bool external __rte_unused,
+		      struct rte_flow_error *error)
+{
+	rte_flow_error_set(error, ENOTSUP,
+			   RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, NULL);
+	return 0;
+}
+
 static int
 flow_null_validate(struct rte_eth_dev *dev __rte_unused,
@@ -4151,4 +4165,5 @@  flow_null_counter_query(struct rte_eth_dev *dev,
 /* Void driver to protect from null pointer reference. */
 const struct mlx5_flow_driver_ops mlx5_flow_null_drv_ops = {
+	.list_create = flow_null_list_create,
 	.validate = flow_null_validate,
 	.prepare = flow_null_prepare,