From: Lijun Ou Date: Sat, 8 Dec 2018 10:40:09 +0000 (+0800) Subject: RDMA/hns: Fix the bug while use multi-hop of pbl X-Git-Tag: Ubuntu-5.0.0-8.9~922^2~97 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=4af07f01f7a787ba5158352b98c9e3cb74995a1c;p=mirror_ubuntu-disco-kernel.git RDMA/hns: Fix the bug while use multi-hop of pbl It will prevent multiply overflow when defines the pbl for u64 type. Signed-off-by: Lijun Ou Signed-off-by: Jason Gunthorpe --- diff --git a/drivers/infiniband/hw/hns/hns_roce_mr.c b/drivers/infiniband/hw/hns/hns_roce_mr.c index fabc95dbdf97..ee5991bd4171 100644 --- a/drivers/infiniband/hw/hns/hns_roce_mr.c +++ b/drivers/infiniband/hw/hns/hns_roce_mr.c @@ -1128,14 +1128,14 @@ struct ib_mr *hns_roce_reg_user_mr(struct ib_pd *pd, u64 start, u64 length, goto err_umem; } } else { - int pbl_size = 1; + u64 pbl_size = 1; bt_size = (1 << (hr_dev->caps.pbl_ba_pg_sz + PAGE_SHIFT)) / 8; for (i = 0; i < hr_dev->caps.pbl_hop_num; i++) pbl_size *= bt_size; if (n > pbl_size) { dev_err(dev, - " MR len %lld err. MR page num is limited to %d!\n", + " MR len %lld err. MR page num is limited to %lld!\n", length, pbl_size); ret = -EINVAL; goto err_umem;