When _mlx5_ipool_get_cache is called, idx may be invalid and the "trunk" is NULL in this case. Assert is not correct and add checks that if trunk is NULL or not. Return NULL If trunk is NULL.
Fixes: 42f463395f ("net/mlx5: support indexed pool non-lcore operations") Cc: sta...@dpdk.org Signed-off-by: Haifei Luo <haif...@nvidia.com> Acked-by: Suanming Mou <suanmi...@nvidia.com> --- drivers/net/mlx5/mlx5_utils.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_utils.c b/drivers/net/mlx5/mlx5_utils.c index e28db2ec43..93c10f20a7 100644 --- a/drivers/net/mlx5/mlx5_utils.c +++ b/drivers/net/mlx5/mlx5_utils.c @@ -379,7 +379,8 @@ _mlx5_ipool_get_cache(struct mlx5_indexed_pool *pool, int cidx, uint32_t idx) idx -= 1; trunk_idx = mlx5_trunk_idx_get(pool, idx); trunk = lc->trunks[trunk_idx]; - MLX5_ASSERT(trunk); + if (!trunk) + return NULL; entry_idx = idx - mlx5_trunk_idx_offset_get(pool, trunk_idx); return &trunk->data[entry_idx * pool->cfg.size]; } -- 2.39.3