]> xenbits.xensource.com Git - arm/linux.git/commitdiff
xen/privcmd: replace kcalloc() by kvcalloc() when allocating empty pages
authorJan Beulich <jbeulich@suse.com>
Wed, 22 Sep 2021 10:16:35 +0000 (12:16 +0200)
committerStefano Stabellini <stefano.stabellini@xilinx.com>
Tue, 5 Oct 2021 21:01:40 +0000 (14:01 -0700)
Osstest has been suffering test failures for a little while from order-4
allocation failures, resulting from alloc_empty_pages() calling
kcalloc(). As there's no need for physically contiguous space here,
switch to kvcalloc().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/6d698901-98a4-05be-c421-bcd0713f5335@suse.com
Signed-off-by: Juergen Gross <jgross@suse.com>
(cherry picked from commit 0432523f4807a83902857347bd73eb817ef0a742)

drivers/xen/privcmd.c

index c6070e70dd73d6229f522aa3cd890e830589a04d..206170b8c6ce5e44c585f87a87913399bb295fff 100644 (file)
@@ -423,7 +423,7 @@ static int alloc_empty_pages(struct vm_area_struct *vma, int numpgs)
        int rc;
        struct page **pages;
 
-       pages = kcalloc(numpgs, sizeof(pages[0]), GFP_KERNEL);
+       pages = kvcalloc(numpgs, sizeof(pages[0]), GFP_KERNEL);
        if (pages == NULL)
                return -ENOMEM;
 
@@ -431,7 +431,7 @@ static int alloc_empty_pages(struct vm_area_struct *vma, int numpgs)
        if (rc != 0) {
                pr_warn("%s Could not alloc %d pfns rc:%d\n", __func__,
                        numpgs, rc);
-               kfree(pages);
+               kvfree(pages);
                return -ENOMEM;
        }
        BUG_ON(vma->vm_private_data != NULL);
@@ -906,7 +906,7 @@ static void privcmd_close(struct vm_area_struct *vma)
        else
                pr_crit("unable to unmap MFN range: leaking %d pages. rc=%d\n",
                        numpgs, rc);
-       kfree(pages);
+       kvfree(pages);
 }
 
 static vm_fault_t privcmd_fault(struct vm_fault *vmf)