When creating a meter_mark action, the profile should be specified.
Or else there would be a crash if the pointer to the profile was not
set properly:
  1. creating an action template with only action mask set and using
     this template to create a table
  2. creating a flow rule without setting the profile if the action
     of meter_mark is not fixed

The check should be done inside the action allocation and an error
needs to be returned immediately.

Fixes: 48fbb0e93d06 ("net/mlx5: support flow meter mark indirect action with 
HWS")
Cc: akozy...@nvidia.com
Cc: sta...@dpdk.org

Signed-off-by: Bing Zhao <bi...@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viachesl...@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow_hw.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index b5137a822a..c64b260fea 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1325,6 +1325,8 @@ flow_hw_meter_mark_alloc(struct rte_eth_dev *dev, 
uint32_t queue,
        struct mlx5_flow_meter_info *fm;
        uint32_t mtr_id;
 
+       if (meter_mark->profile == NULL)
+               return NULL;
        aso_mtr = mlx5_ipool_malloc(priv->hws_mpool->idx_pool, &mtr_id);
        if (!aso_mtr)
                return NULL;
-- 
2.34.1

Reply via email to