aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/umem_odp.c
diff options
context:
space:
mode:
authorJason Gunthorpe <jgg@mellanox.com>2019-08-19 14:17:07 +0300
committerJason Gunthorpe <jgg@mellanox.com>2019-08-21 14:08:43 -0300
commit37824952dc8fcd96e5c5a1ce9abf3f0ba09b1e5e (patch)
tree295d58dabc52c32e2d9ce83d0e5348643a64af0a /drivers/infiniband/core/umem_odp.c
parentRDMA/odp: Check for overflow when computing the umem_odp end (diff)
downloadlinux-dev-37824952dc8fcd96e5c5a1ce9abf3f0ba09b1e5e.tar.xz
linux-dev-37824952dc8fcd96e5c5a1ce9abf3f0ba09b1e5e.zip
RDMA/odp: Use kvcalloc for the dma_list and page_list
There is no specific need for these to be in the valloc space, let the system decide automatically how to do the allocation. Link: https://lore.kernel.org/r/20190819111710.18440-10-leon@kernel.org Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'drivers/infiniband/core/umem_odp.c')
-rw-r--r--drivers/infiniband/core/umem_odp.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/infiniband/core/umem_odp.c b/drivers/infiniband/core/umem_odp.c
index d0ef7d86213e..72765b110f4b 100644
--- a/drivers/infiniband/core/umem_odp.c
+++ b/drivers/infiniband/core/umem_odp.c
@@ -314,13 +314,13 @@ static inline int ib_init_umem_odp(struct ib_umem_odp *umem_odp,
*/
umem_odp->interval_tree.last--;
- umem_odp->page_list = vzalloc(
- array_size(sizeof(*umem_odp->page_list), pages));
+ umem_odp->page_list = kvcalloc(
+ pages, sizeof(*umem_odp->page_list), GFP_KERNEL);
if (!umem_odp->page_list)
return -ENOMEM;
- umem_odp->dma_list =
- vzalloc(array_size(sizeof(*umem_odp->dma_list), pages));
+ umem_odp->dma_list = kvcalloc(
+ pages, sizeof(*umem_odp->dma_list), GFP_KERNEL);
if (!umem_odp->dma_list) {
ret = -ENOMEM;
goto out_page_list;
@@ -354,9 +354,9 @@ static inline int ib_init_umem_odp(struct ib_umem_odp *umem_odp,
out_unlock:
mutex_unlock(&ctx->per_mm_list_lock);
- vfree(umem_odp->dma_list);
+ kvfree(umem_odp->dma_list);
out_page_list:
- vfree(umem_odp->page_list);
+ kvfree(umem_odp->page_list);
return ret;
}
@@ -532,8 +532,8 @@ void ib_umem_odp_release(struct ib_umem_odp *umem_odp)
ib_umem_odp_unmap_dma_pages(umem_odp, ib_umem_start(umem_odp),
ib_umem_end(umem_odp));
remove_umem_from_per_mm(umem_odp);
- vfree(umem_odp->dma_list);
- vfree(umem_odp->page_list);
+ kvfree(umem_odp->dma_list);
+ kvfree(umem_odp->page_list);
}
put_per_mm(umem_odp);
mmdrop(umem_odp->umem.owning_mm);