From: Alex Vesker <va...@nvidia.com>

In case decapL3 action is created we would access header
data even in case the SHARED flag is not set, this would
lead to an invalid memory access.

Fixes: 3a6c50215c07 ("net/mlx5/hws: support multi-pattern")
Cc: sta...@dpdk.org

Signed-off-by: Alex Vesker <va...@nvidia.com>
Acked-by: Matan Azrad <ma...@nvidia.com>
---
 drivers/net/mlx5/hws/mlx5dr_action.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c 
b/drivers/net/mlx5/hws/mlx5dr_action.c
index 084d4d606e..562fb5cbb4 100644
--- a/drivers/net/mlx5/hws/mlx5dr_action.c
+++ b/drivers/net/mlx5/hws/mlx5dr_action.c
@@ -1775,7 +1775,9 @@ mlx5dr_action_handle_tunnel_l3_to_l2(struct mlx5dr_action 
*action,
 
        /* Create a full modify header action list in case shared */
        mlx5dr_action_prepare_decap_l3_actions(hdrs->sz, mh_data, 
&num_of_actions);
-       mlx5dr_action_prepare_decap_l3_data(hdrs->data, mh_data, 
num_of_actions);
+
+       if (action->flags & MLX5DR_ACTION_FLAG_SHARED)
+               mlx5dr_action_prepare_decap_l3_data(hdrs->data, mh_data, 
num_of_actions);
 
        /* All DecapL3 cases require the same max arg size */
        arg_obj = mlx5dr_arg_create_modify_header_arg(ctx,
-- 
2.39.3

Reply via email to