]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
RDMA/hns: Correct the value of srq_desc_size
authorWenpeng Liang <liangwenpeng@huawei.com>
Fri, 1 Nov 2019 02:33:30 +0000 (10:33 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 13 Dec 2019 07:48:29 +0000 (08:48 +0100)
[ Upstream commit 411c1e6774e2e1f96b1ccce4f119376b94ade3e4 ]

srq_desc_size should be rounded up to pow of two before used, or related
calculation may cause allocating wrong size of memory for srq buffer.

Fixes: c7bcb13442e1 ("RDMA/hns: Add SRQ support for hip08 kernel mode")
Link: https://lore.kernel.org/r/1572575610-52530-3-git-send-email-liweihang@hisilicon.com
Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
Signed-off-by: Weihang Li <liweihang@hisilicon.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/hns/hns_roce_srq.c

index 38bb548eaa6d8047b2b996c5396bc20f1da51c2d..9768e377cd22c3f1363db2dcb64a6e507c1e56b7 100644 (file)
@@ -221,7 +221,7 @@ int hns_roce_create_srq(struct ib_srq *ib_srq,
        srq->max = roundup_pow_of_two(srq_init_attr->attr.max_wr + 1);
        srq->max_gs = srq_init_attr->attr.max_sge;
 
-       srq_desc_size = max(16, 16 * srq->max_gs);
+       srq_desc_size = roundup_pow_of_two(max(16, 16 * srq->max_gs));
 
        srq->wqe_shift = ilog2(srq_desc_size);