There's no reason to request physically contiguous memory for those
allocations.

Reported-by: Ian Jackson <ian.jack...@citrix.com>
Signed-off-by: Roger Pau Monné <roger....@citrix.com>
---
Cc: Boris Ostrovsky <boris.ostrov...@oracle.com>
Cc: Juergen Gross <jgr...@suse.com>
Cc: Stefano Stabellini <sstabell...@kernel.org>
Cc: Konrad Rzeszutek Wilk <konrad.w...@oracle.com>
Cc: Jens Axboe <ax...@kernel.dk>
Cc: xen-devel@lists.xenproject.org
Cc: linux-bl...@vger.kernel.org
Cc: sta...@vger.kernel.org
---
 drivers/block/xen-blkfront.c | 38 ++++++++++++++++++------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index d43a5677ccbc..a74d03913822 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -1310,11 +1310,11 @@ static void blkif_free_ring(struct blkfront_ring_info 
*rinfo)
                }
 
 free_shadow:
-               kfree(rinfo->shadow[i].grants_used);
+               kvfree(rinfo->shadow[i].grants_used);
                rinfo->shadow[i].grants_used = NULL;
-               kfree(rinfo->shadow[i].indirect_grants);
+               kvfree(rinfo->shadow[i].indirect_grants);
                rinfo->shadow[i].indirect_grants = NULL;
-               kfree(rinfo->shadow[i].sg);
+               kvfree(rinfo->shadow[i].sg);
                rinfo->shadow[i].sg = NULL;
        }
 
@@ -1353,7 +1353,7 @@ static void blkif_free(struct blkfront_info *info, int 
suspend)
        for (i = 0; i < info->nr_rings; i++)
                blkif_free_ring(&info->rinfo[i]);
 
-       kfree(info->rinfo);
+       kvfree(info->rinfo);
        info->rinfo = NULL;
        info->nr_rings = 0;
 }
@@ -1914,9 +1914,9 @@ static int negotiate_mq(struct blkfront_info *info)
        if (!info->nr_rings)
                info->nr_rings = 1;
 
-       info->rinfo = kcalloc(info->nr_rings,
-                             sizeof(struct blkfront_ring_info),
-                             GFP_KERNEL);
+       info->rinfo = kvcalloc(info->nr_rings,
+                              sizeof(struct blkfront_ring_info),
+                              GFP_KERNEL);
        if (!info->rinfo) {
                xenbus_dev_fatal(info->xbdev, -ENOMEM, "allocating ring_info 
structure");
                info->nr_rings = 0;
@@ -2232,17 +2232,17 @@ static int blkfront_setup_indirect(struct 
blkfront_ring_info *rinfo)
 
        for (i = 0; i < BLK_RING_SIZE(info); i++) {
                rinfo->shadow[i].grants_used =
-                       kcalloc(grants,
-                               sizeof(rinfo->shadow[i].grants_used[0]),
-                               GFP_NOIO);
-               rinfo->shadow[i].sg = kcalloc(psegs,
-                                             sizeof(rinfo->shadow[i].sg[0]),
-                                             GFP_NOIO);
+                       kvcalloc(grants,
+                                sizeof(rinfo->shadow[i].grants_used[0]),
+                                GFP_NOIO);
+               rinfo->shadow[i].sg = kvcalloc(psegs,
+                                              sizeof(rinfo->shadow[i].sg[0]),
+                                              GFP_NOIO);
                if (info->max_indirect_segments)
                        rinfo->shadow[i].indirect_grants =
-                               kcalloc(INDIRECT_GREFS(grants),
-                                       
sizeof(rinfo->shadow[i].indirect_grants[0]),
-                                       GFP_NOIO);
+                               kvcalloc(INDIRECT_GREFS(grants),
+                                        
sizeof(rinfo->shadow[i].indirect_grants[0]),
+                                        GFP_NOIO);
                if ((rinfo->shadow[i].grants_used == NULL) ||
                        (rinfo->shadow[i].sg == NULL) ||
                     (info->max_indirect_segments &&
@@ -2256,11 +2256,11 @@ static int blkfront_setup_indirect(struct 
blkfront_ring_info *rinfo)
 
 out_of_memory:
        for (i = 0; i < BLK_RING_SIZE(info); i++) {
-               kfree(rinfo->shadow[i].grants_used);
+               kvfree(rinfo->shadow[i].grants_used);
                rinfo->shadow[i].grants_used = NULL;
-               kfree(rinfo->shadow[i].sg);
+               kvfree(rinfo->shadow[i].sg);
                rinfo->shadow[i].sg = NULL;
-               kfree(rinfo->shadow[i].indirect_grants);
+               kvfree(rinfo->shadow[i].indirect_grants);
                rinfo->shadow[i].indirect_grants = NULL;
        }
        if (!list_empty(&rinfo->indirect_pages)) {
-- 
2.17.2 (Apple Git-113)


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to