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

Reply via email to