[PATCH] mm/memcg: check kzalloc_node() return in memcg1_init()

Hongfu Li posted 1 patch 3 days, 14 hours ago
mm/memcontrol-v1.c | 2 +++++
1 file changed, 2 insertions(+)
[PATCH] mm/memcg: check kzalloc_node() return in memcg1_init()
Posted by Hongfu Li 3 days, 14 hours ago
From: Hongfu Li <lihongfu@kylinos.cn>

Add NULL check for per-node kzalloc_node() allocations in memcg1_init().

Skip the NUMA node when allocation fails. All users of
soft_limit_tree.rb_tree_per_node[] safely handle NULL entries, only losing
soft-limit tracking for that node.

Signed-off-by: Hongfu Li <lihongfu@kylinos.cn>
---
 mm/memcontrol-v1.c | 2 +++++
 1 file changed, 2 insertions(+)

diff --git a/mm/memcontrol-v1.c b/mm/memcontrol-v1.c
index 2dc599484d00..33ea693c9281 100644
--- a/mm/memcontrol-v1.c
+++ b/mm/memcontrol-v1.c
@@ -2566,6 +2566,8 @@ static int __init memcg1_init(void)
 		struct mem_cgroup_tree_per_node *rtpn;
 
 		rtpn = kzalloc_node(sizeof(*rtpn), GFP_KERNEL, node);
+		if (!rtpn)
+			continue;
 
 		rtpn->rb_root = RB_ROOT;
 		rtpn->rb_rightmost = NULL;
-- 
2.54.0
Re: [PATCH] mm/memcg: check kzalloc_node() return in memcg1_init()
Posted by Andrew Morton 3 days ago
On Tue, 21 Jul 2026 18:09:16 +0800 Hongfu Li <hongfu.li@linux.dev> wrote:

> From: Hongfu Li <lihongfu@kylinos.cn>
> 
> Add NULL check for per-node kzalloc_node() allocations in memcg1_init().
> 
> Skip the NUMA node when allocation fails. All users of
> soft_limit_tree.rb_tree_per_node[] safely handle NULL entries, only losing
> soft-limit tracking for that node.
> 
> ...
>
> --- a/mm/memcontrol-v1.c
> +++ b/mm/memcontrol-v1.c
> @@ -2566,6 +2566,8 @@ static int __init memcg1_init(void)
>  		struct mem_cgroup_tree_per_node *rtpn;
>  
>  		rtpn = kzalloc_node(sizeof(*rtpn), GFP_KERNEL, node);
> +		if (!rtpn)
> +			continue;
>  
>  		rtpn->rb_root = RB_ROOT;
>  		rtpn->rb_rightmost = NULL;

Thanks.  We assume that mamory allocations cannot fail within __init
code.  Because if they do, the kernel has some ghastly problem and it
cannot possibly run.
Re: [PATCH] mm/memcg: check kzalloc_node() return in memcg1_init()
Posted by Hongfu Li 2 days, 17 hours ago
> >  		rtpn = kzalloc_node(sizeof(*rtpn), GFP_KERNEL, node);
> > +		if (!rtpn)
> > +			continue;
> >  
> >  		rtpn->rb_root = RB_ROOT;
> >  		rtpn->rb_rightmost = NULL;
> 
> Thanks.  We assume that mamory allocations cannot fail within __init
> code.  Because if they do, the kernel has some ghastly problem and it
> cannot possibly run.

Understood, thanks for the clarification. I'll drop this patch.

Best regards,
Hongfu