[PATCH] RDMA/mthca: Fix off-by-one in mthca_map_user_db()

From: Serhat Kumral

Date: Fri Oct 23 2026 - 15:25:32 EST


db_tab->page[] has uarc_size / MTHCA_ICM_PAGE_SIZE elements, so valid
doorbell indices are in the range [0, uarc_size / 8 - 1]. Allowing
index == uarc_size / 8 results in an out-of-bounds access at
db_tab->page[npages]. Use '>=' instead of '>' in the bounds check.

Fixes: 56483ec1b702 ("[PATCH] IB uverbs: add mthca user doorbell record support")
Signed-off-by: Serhat Kumral <serhatkumral1@xxxxxxxxx>
---
drivers/infiniband/hw/mthca/mthca_memfree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.c b/drivers/infiniband/hw/mthca/mthca_memfree.c
index 9c5eb03f354d..39d82dc73807 100644
--- a/drivers/infiniband/hw/mthca/mthca_memfree.c
+++ b/drivers/infiniband/hw/mthca/mthca_memfree.c
@@ -453,7 +453,7 @@ int mthca_map_user_db(struct mthca_dev *dev, struct mthca_uar *uar,
if (!mthca_is_memfree(dev))
return 0;

- if (index < 0 || index > dev->uar_table.uarc_size / 8)
+ if (index < 0 || index >= dev->uar_table.uarc_size / 8)
return -EINVAL;

mutex_lock(&db_tab->mutex);
--
2.53.0