From 9b080425e31297199dcbfa35d95d287d729c68a0 Mon Sep 17 00:00:00 2001 From: Asaf Penso Date: Thu, 16 Apr 2020 17:15:09 +0000 Subject: [PATCH] net/mlx5: fix assert in doorbell lookup The asserts makes sure that 'i' doesn't exceed the expected value. This to prevent an out of bound access to dbr_bitmap. The current location of the assert protects the assignment of dbr_bitmap, but not the access to it. Moved the assert to the correct place, to protect both cases. Also, used an existing define for the assert. Fixes: 21cae8580fd0 ("net/mlx5: allocate door-bells via DevX") Cc: stable@dpdk.org Signed-off-by: Asaf Penso Reviewed-by: Dekel Peled Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/mlx5.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index cc13e447d6..75ada96cc5 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -2149,8 +2149,8 @@ mlx5_get_dbr(struct rte_eth_dev *dev, struct mlx5_devx_dbr_page **dbr_page) i++) ; /* Empty. */ /* Find the first clear bit. */ + MLX5_ASSERT(i < MLX5_DBR_BITMAP_SIZE); j = rte_bsf64(~page->dbr_bitmap[i]); - MLX5_ASSERT(i < (MLX5_DBR_PER_PAGE / 64)); page->dbr_bitmap[i] |= (1 << j); page->dbr_count++; *dbr_page = page;