*/
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;
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;
}
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);