net/mlx5: fix bug trunk is null
Checks
Commit Message
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: stable@dpdk.org
Signed-off-by: Haifei Luo <haifeil@nvidia.com>
Acked-by: Suanming Mou <suanmingm@nvidia.com>
---
drivers/net/mlx5/mlx5_utils.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Comments
Hi,
From: Haifei Luo <haifeil@nvidia.com>
Sent: Wednesday, May 15, 2024 12:36 PM
To: Matan Azrad; Ori Kam; Slava Ovsiienko; ferruh.yigit@intel.com; Dariusz Sosnowski; Suanming Mou
Cc: dev@dpdk.org; NBU-Contact-Thomas Monjalon (EXTERNAL); Raslan Darawsheh; stable@dpdk.org
Subject: [PATCH] net/mlx5: fix bug trunk is null
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: stable@dpdk.org
Signed-off-by: Haifei Luo <haifeil@nvidia.com>
Acked-by: Suanming Mou <suanmingm@nvidia.com>
Patch applied to next-net-mlx,
Kindest regards
Raslan Darawsheh
@@ -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];
}