2018-10-07 08:32:31

by Mike Rapoport

[permalink] [raw]
Subject: [PATCH] percpu: stop leaking bitmap metadata blocks

The commit ca460b3c9627 ("percpu: introduce bitmap metadata blocks")
introduced bitmap metadata blocks. These metadata blocks are allocated
whenever a new chunk is created, but they are never freed. Fix it.

Fixes: ca460b3c9627 ("percpu: introduce bitmap metadata blocks")

Signed-off-by: Mike Rapoport <[email protected]>
Cc: [email protected]
---
mm/percpu.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/mm/percpu.c b/mm/percpu.c
index d21cb13..25104cd 100644
--- a/mm/percpu.c
+++ b/mm/percpu.c
@@ -1212,6 +1212,7 @@ static void pcpu_free_chunk(struct pcpu_chunk *chunk)
{
if (!chunk)
return;
+ pcpu_mem_free(chunk->md_blocks);
pcpu_mem_free(chunk->bound_map);
pcpu_mem_free(chunk->alloc_map);
pcpu_mem_free(chunk);
--
2.7.4



2018-10-07 22:40:35

by Dennis Zhou

[permalink] [raw]
Subject: Re: [PATCH] percpu: stop leaking bitmap metadata blocks

Hi Mike,

On Sun, Oct 07, 2018 at 11:31:51AM +0300, Mike Rapoport wrote:
> The commit ca460b3c9627 ("percpu: introduce bitmap metadata blocks")
> introduced bitmap metadata blocks. These metadata blocks are allocated
> whenever a new chunk is created, but they are never freed. Fix it.
>
> Fixes: ca460b3c9627 ("percpu: introduce bitmap metadata blocks")
>
> Signed-off-by: Mike Rapoport <[email protected]>
> Cc: [email protected]
> ---
> mm/percpu.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/mm/percpu.c b/mm/percpu.c
> index d21cb13..25104cd 100644
> --- a/mm/percpu.c
> +++ b/mm/percpu.c
> @@ -1212,6 +1212,7 @@ static void pcpu_free_chunk(struct pcpu_chunk *chunk)
> {
> if (!chunk)
> return;
> + pcpu_mem_free(chunk->md_blocks);
> pcpu_mem_free(chunk->bound_map);
> pcpu_mem_free(chunk->alloc_map);
> pcpu_mem_free(chunk);

Ah a bit of a boneheaded miss on my part.. Thanks for catching this!
I've applied it to for-4.19-fixes.

Thanks,
Dennis