]> git.droids-corp.org - dpdk.git/commitdiff
net/mlx5: fix indexed pool fetch overlap
authorSuanming Mou <suanmingm@nvidia.com>
Wed, 23 Feb 2022 06:26:11 +0000 (08:26 +0200)
committerRaslan Darawsheh <rasland@nvidia.com>
Tue, 1 Mar 2022 21:24:22 +0000 (22:24 +0100)
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 <suanmingm@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
drivers/net/mlx5/mlx5_utils.c

index be33af96fe42979e2bc8e69d317109d392e13245..4115a2ad7777f0c120005df8ab08348d72c90043 100644 (file)
@@ -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;