From 7869d603807c447f357ec3b35c193a1019e6e1b2 Mon Sep 17 00:00:00 2001 From: Alexander Kozyrev Date: Wed, 9 Nov 2022 14:58:19 +0200 Subject: [PATCH] net/mlx5: fix indexed pool local cache crash 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: d15c0946beea ("net/mlx5: add indexed pool local cache") Cc: stable@dpdk.org Signed-off-by: Alexander Kozyrev Acked-by: Viacheslav Ovsiienko --- 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;