summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHonggang LI <honggangli@163.com>2025-12-29 10:56:17 +0800
committerLeon Romanovsky <leon@kernel.org>2025-12-30 05:47:32 -0500
commit43bd09d5b750f700499ae8ec45fd41a4c48673e6 (patch)
treed9192975b3825949663f3eee00a122cd36fdc067
parent3c68cf68233e556e0102f45b69f7448908dc1f44 (diff)
downloadlinux-next-43bd09d5b750f700499ae8ec45fd41a4c48673e6.tar.gz
linux-next-43bd09d5b750f700499ae8ec45fd41a4c48673e6.zip
RDMA/rtrs: Fix clt_path::max_pages_per_mr calculation
If device max_mr_size bits in the range [mr_page_shift+31:mr_page_shift] are zero, the `min3` function will set clt_path::max_pages_per_mr to zero. `alloc_path_reqs` will pass zero, which is invalid, as the third parameter to `ib_alloc_mr`. Fixes: 6a98d71daea1 ("RDMA/rtrs: client: main functionality") Signed-off-by: Honggang LI <honggangli@163.com> Link: https://patch.msgid.link/20251229025617.13241-1-honggangli@163.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
-rw-r--r--drivers/infiniband/ulp/rtrs/rtrs-clt.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
index 71387811b281..2b397a544cb9 100644
--- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c
+++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
@@ -1464,6 +1464,7 @@ static void query_fast_reg_mode(struct rtrs_clt_path *clt_path)
mr_page_shift = max(12, ffs(ib_dev->attrs.page_size_cap) - 1);
max_pages_per_mr = ib_dev->attrs.max_mr_size;
do_div(max_pages_per_mr, (1ull << mr_page_shift));
+ max_pages_per_mr = min_not_zero((u32)max_pages_per_mr, U32_MAX);
clt_path->max_pages_per_mr =
min3(clt_path->max_pages_per_mr, (u32)max_pages_per_mr,
ib_dev->attrs.max_fast_reg_page_list_len);