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: sta...@dpdk.org

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

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,
-- 
2.48.1

Reply via email to