From: Suanming Mou Date: Wed, 23 Feb 2022 06:26:11 +0000 (+0200) Subject: net/mlx5: fix indexed pool fetch overlap X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;ds=inline;h=7bc528bac95a00e2462ae76b1f9e8610d4d67477;p=dpdk.git net/mlx5: fix indexed pool fetch overlap For indexed pool with local cache, when a new trunk is allocated, half of the trunk's index was fetched to the local cache. In case of local cache size was less then half of the trunk size, memory overlap happened. This commit adds the check of the fetch size, if local cache size is less than fetch size, adjust the fetch size to be local cache size. Fixes: d15c0946beea ("net/mlx5: add indexed pool local cache") Cc: stable@dpdk.org Signed-off-by: Suanming Mou Acked-by: Viacheslav Ovsiienko --- diff --git a/drivers/net/mlx5/mlx5_utils.c b/drivers/net/mlx5/mlx5_utils.c index be33af96fe..4115a2ad77 100644 --- a/drivers/net/mlx5/mlx5_utils.c +++ b/drivers/net/mlx5/mlx5_utils.c @@ -340,6 +340,8 @@ check_again: /* Enqueue half of the index to global. */ ts_idx = mlx5_trunk_idx_offset_get(pool, trunk_idx) + 1; fetch_size = trunk->free >> 1; + if (fetch_size > pool->cfg.per_core_cache) + fetch_size = trunk->free - pool->cfg.per_core_cache; for (i = 0; i < fetch_size; i++) lc->idx[i] = ts_idx + i; lc->len = fetch_size;