2019-05-03 15:08:16

by Roger Pau Monne

[permalink] [raw]
Subject: [PATCH] xen-blkfront: switch kcalloc to kvcalloc for large array allocation

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

Reported-by: Ian Jackson <[email protected]>
Signed-off-by: Roger Pau Monné <[email protected]>
---
Cc: Boris Ostrovsky <[email protected]>
Cc: Juergen Gross <[email protected]>
Cc: Stefano Stabellini <[email protected]>
Cc: Konrad Rzeszutek Wilk <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
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)


2019-05-05 19:15:00

by Sasha Levin

[permalink] [raw]
Subject: Re: [PATCH] xen-blkfront: switch kcalloc to kvcalloc for large array allocation

On Fri, May 03, 2019 at 05:04:01PM +0200, Roger Pau Monne wrote:
>There's no reason to request physically contiguous memory for those
>allocations.
>
>Reported-by: Ian Jackson <[email protected]>
>Signed-off-by: Roger Pau Monn? <[email protected]>
>---

You really don't want this scissor line here, git will trim all your
message content below it.

--
Thanks,
Sasha

>Cc: Boris Ostrovsky <[email protected]>
>Cc: Juergen Gross <[email protected]>
>Cc: Stefano Stabellini <[email protected]>
>Cc: Konrad Rzeszutek Wilk <[email protected]>
>Cc: Jens Axboe <[email protected]>
>Cc: [email protected]
>Cc: [email protected]
>Cc: [email protected]
>---

2019-05-06 08:12:32

by Jürgen Groß

[permalink] [raw]
Subject: Re: [PATCH] xen-blkfront: switch kcalloc to kvcalloc for large array allocation

On 03/05/2019 17:04, Roger Pau Monne wrote:
> There's no reason to request physically contiguous memory for those
> allocations.
>
> Reported-by: Ian Jackson <[email protected]>
> Signed-off-by: Roger Pau Monné <[email protected]>

Reviewed-by: Juergen Gross <[email protected]>


Juergen

2019-05-31 14:42:56

by Jürgen Groß

[permalink] [raw]
Subject: Re: [Xen-devel] [PATCH] xen-blkfront: switch kcalloc to kvcalloc for large array allocation

On 06/05/2019 10:11, Juergen Gross wrote:
> On 03/05/2019 17:04, Roger Pau Monne wrote:
>> There's no reason to request physically contiguous memory for those
>> allocations.
>>
>> Reported-by: Ian Jackson <[email protected]>
>> Signed-off-by: Roger Pau Monné <[email protected]>
>
> Reviewed-by: Juergen Gross <[email protected]>

Jens, are you going to tkae this patch or should I carry it through the
Xen tree?


Juergen

2019-05-31 14:46:38

by Konrad Rzeszutek Wilk

[permalink] [raw]
Subject: Re: [Xen-devel] [PATCH] xen-blkfront: switch kcalloc to kvcalloc for large array allocation

On May 31, 2019 10:41:16 AM EDT, Juergen Gross <[email protected]> wrote:
>On 06/05/2019 10:11, Juergen Gross wrote:
>> On 03/05/2019 17:04, Roger Pau Monne wrote:
>>> There's no reason to request physically contiguous memory for those
>>> allocations.
>>>
>>> Reported-by: Ian Jackson <[email protected]>
>>> Signed-off-by: Roger Pau Monné <[email protected]>
>>
>> Reviewed-by: Juergen Gross <[email protected]>
>
>Jens, are you going to tkae this patch or should I carry it through the
>Xen tree?

Usually I ended up picking them (and then asking Jens to git pull into his branch) but if you want to handle them that would be much easier!

(And if so, please add Acked-by on them from me).
>
>
>Juergen

2019-06-04 13:15:02

by Boris Ostrovsky

[permalink] [raw]
Subject: Re: [Xen-devel] [PATCH] xen-blkfront: switch kcalloc to kvcalloc for large array allocation

On 5/31/19 10:44 AM, Konrad Rzeszutek Wilk wrote:
> On May 31, 2019 10:41:16 AM EDT, Juergen Gross <[email protected]> wrote:
>> On 06/05/2019 10:11, Juergen Gross wrote:
>>> On 03/05/2019 17:04, Roger Pau Monne wrote:
>>>> There's no reason to request physically contiguous memory for those
>>>> allocations.
>>>>
>>>> Reported-by: Ian Jackson <[email protected]>
>>>> Signed-off-by: Roger Pau Monné <[email protected]>
>>> Reviewed-by: Juergen Gross <[email protected]>
>> Jens, are you going to tkae this patch or should I carry it through the
>> Xen tree?
> Usually I ended up picking them (and then asking Jens to git pull into his branch) but if you want to handle them that would be much easier!
>
> (And if so, please add Acked-by on them from me).


Applied to for-linus-5.2b

-boris