diff options
author | Chengchang Tang <tangchengchang@huawei.com> | 2024-07-10 15:37:03 +0200 |
---|---|---|
committer | Leon Romanovsky <leon@kernel.org> | 2024-07-11 12:25:12 +0200 |
commit | 36397b907355e2fdb5a25a02a7921a937fd8ef4c (patch) | |
tree | 279597e408f569fce9f23a0fcb34362b6f913e16 /drivers/infiniband/hw/hns | |
parent | RDMA/hns: Fix shift-out-bounds when max_inline_data is 0 (diff) | |
download | linux-36397b907355e2fdb5a25a02a7921a937fd8ef4c.tar.xz linux-36397b907355e2fdb5a25a02a7921a937fd8ef4c.zip |
RDMA/hns: Fix undifined behavior caused by invalid max_sge
If max_sge has been set to 0, roundup_pow_of_two() in
set_srq_basic_param() may have undefined behavior.
Fixes: 9dd052474a26 ("RDMA/hns: Allocate one more recv SGE for HIP08")
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://lore.kernel.org/r/20240710133705.896445-7-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Diffstat (limited to 'drivers/infiniband/hw/hns')
-rw-r--r-- | drivers/infiniband/hw/hns/hns_roce_srq.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/hns/hns_roce_srq.c b/drivers/infiniband/hw/hns/hns_roce_srq.c index f1997abc97ca..c9b8233f4b05 100644 --- a/drivers/infiniband/hw/hns/hns_roce_srq.c +++ b/drivers/infiniband/hw/hns/hns_roce_srq.c @@ -297,7 +297,7 @@ static int set_srq_basic_param(struct hns_roce_srq *srq, max_sge = proc_srq_sge(hr_dev, srq, !!udata); if (attr->max_wr > hr_dev->caps.max_srq_wrs || - attr->max_sge > max_sge) { + attr->max_sge > max_sge || !attr->max_sge) { ibdev_err(&hr_dev->ib_dev, "invalid SRQ attr, depth = %u, sge = %u.\n", attr->max_wr, attr->max_sge); |