2020-06-14 12:29:51

by Muchun Song

[permalink] [raw]
Subject: [PATCH] mm: memcontrol: Fix do not put the css reference

We should put the css reference when memory allocation failed.

Fixes: f0a3a24b532d ("mm: memcg/slab: rework non-root kmem_cache lifecycle management")
Signed-off-by: Muchun Song <[email protected]>
---
mm/memcontrol.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 0b38b6ad547d..2323d811ee8e 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -2772,8 +2772,10 @@ static void memcg_schedule_kmem_cache_create(struct mem_cgroup *memcg,
return;

cw = kmalloc(sizeof(*cw), GFP_NOWAIT | __GFP_NOWARN);
- if (!cw)
+ if (!cw) {
+ css_put(&memcg->css);
return;
+ }

cw->memcg = memcg;
cw->cachep = cachep;
--
2.11.0


2020-06-14 17:27:12

by Roman Gushchin

[permalink] [raw]
Subject: Re: [PATCH] mm: memcontrol: Fix do not put the css reference

On Sun, Jun 14, 2020 at 08:26:53PM +0800, Muchun Song wrote:
> We should put the css reference when memory allocation failed.
>
> Fixes: f0a3a24b532d ("mm: memcg/slab: rework non-root kmem_cache lifecycle management")
> Signed-off-by: Muchun Song <[email protected]>
> ---
> mm/memcontrol.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)

Good catch, thank you!

Acked-by: Roman Gushchin <[email protected]>

>
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index 0b38b6ad547d..2323d811ee8e 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -2772,8 +2772,10 @@ static void memcg_schedule_kmem_cache_create(struct mem_cgroup *memcg,
> return;
>
> cw = kmalloc(sizeof(*cw), GFP_NOWAIT | __GFP_NOWARN);
> - if (!cw)
> + if (!cw) {
> + css_put(&memcg->css);
> return;
> + }
>
> cw->memcg = memcg;
> cw->cachep = cachep;
> --
> 2.11.0
>

2020-06-15 11:53:26

by Michal Hocko

[permalink] [raw]
Subject: Re: [PATCH] mm: memcontrol: Fix do not put the css reference

On Sun 14-06-20 20:26:53, Muchun Song wrote:
> We should put the css reference when memory allocation failed.
>
> Fixes: f0a3a24b532d ("mm: memcg/slab: rework non-root kmem_cache lifecycle management")
> Signed-off-by: Muchun Song <[email protected]>

This looks like a stable tree material to me.

Acked-by: Michal Hocko <[email protected]>

> ---
> mm/memcontrol.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index 0b38b6ad547d..2323d811ee8e 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -2772,8 +2772,10 @@ static void memcg_schedule_kmem_cache_create(struct mem_cgroup *memcg,
> return;
>
> cw = kmalloc(sizeof(*cw), GFP_NOWAIT | __GFP_NOWARN);
> - if (!cw)
> + if (!cw) {
> + css_put(&memcg->css);
> return;
> + }
>
> cw->memcg = memcg;
> cw->cachep = cachep;
> --
> 2.11.0

--
Michal Hocko
SUSE Labs