Local cache for an indexed pool is not initialized in the situation when all the indices are allocated on one CPU core and freed on another one. That leads to a crash once we try to check its reference counter. Check that the local cache is initialized before accessing this counter.
Fixes: d15c0946be ("net/mlx5: add indexed pool local cache") Cc: sta...@dpdk.org Signed-off-by: Alexander Kozyrev <akozy...@nvidia.com> --- drivers/net/mlx5/mlx5_utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_utils.c b/drivers/net/mlx5/mlx5_utils.c index 4115a2ad77..b295702fd4 100644 --- a/drivers/net/mlx5/mlx5_utils.c +++ b/drivers/net/mlx5/mlx5_utils.c @@ -479,7 +479,7 @@ _mlx5_ipool_free_cache(struct mlx5_indexed_pool *pool, int cidx, uint32_t idx) mlx5_ipool_lock(pool); gc = pool->gc; if (ilc->lc != gc) { - if (!(--ilc->lc->ref_cnt)) + if (ilc->lc && !(--ilc->lc->ref_cnt)) olc = ilc->lc; gc->ref_cnt++; ilc->lc = gc; -- 2.18.2