From: Tim Chen <tim.c.chen@linux.intel.com>
To: Fengyu Wang <wangfengyu@hygon.cn>, Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Juri Lelli <juri.lelli@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>
Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>,
Steven Rostedt <rostedt@goodmis.org>,
Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
Valentin Schneider <vschneid@redhat.com>,
K Prateek Nayak <kprateek.nayak@amd.com>,
Chen Yu <yu.c.chen@intel.com>,
Shrikanth Hegde <sshegde@linux.ibm.com>,
linux-kernel@vger.kernel.org, wujianyong <wujianyong@hygon.cn>,
zhongyuan <zhongyuan@hygon.cn>, huangshijie <huangsj@hygon.cn>
Subject: Re: [PATCH v2] sched/topology: Free NUMA masks on topology allocation failure
Date: Wed, 12 Aug 2026 12:51:58 -0700 [thread overview]
Message-ID: <5adf2cf613a99399750da3d2ea1a095b228d33af.camel@linux.intel.com> (raw)
In-Reply-To: <20260812062206.82410-1-wangfengyu@hygon.cn>
On Wed, 2026-08-12 at 14:22 +0800, Fengyu Wang wrote:
> sched_init_numa() publishes sched_domains_numa_masks before it
> allocates the topology array. When that allocation fails, the early
> return leaves the masks published while sched_domains_numa_levels is
> still zero: nothing dereferences them, but nothing can free them
> either, and the topology they were built for is never installed.
>
> Free the masks on that path, and publish them only once the topology
> array they were built for has been allocated.
>
Reviewed-by: Tim Chen <tim.c.chen@linux.intel.com>
Tim
> Fixes: cb83b629bae0 ("sched/numa: Rewrite the CONFIG_NUMA sched domain support")
> Signed-off-by: Fengyu Wang <wangfengyu@hygon.cn>
> ---
> v2:
> - Publish sched_domains_numa_masks only after the topology array has
> been allocated, instead of publishing it early and unpublishing it
> on the failure path. This drops the rcu_assign_pointer(NULL) and
> the synchronize_rcu() from the error path (Tim Chen).
>
> v1: https://lore.kernel.org/lkml/20260731081413.5505-1-wangfengyu@hygon.cn/
>
> Tested by hardcoding tl to NULL right after the kzalloc() to force the
> failure path; the masks are released and the machine boots normally.
>
> kernel/sched/topology.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
> index 21e816ad23ee..50457f720808 100644
> --- a/kernel/sched/topology.c
> +++ b/kernel/sched/topology.c
> @@ -2392,15 +2392,23 @@ void sched_init_numa(int offline_node)
> }
> }
> }
> - rcu_assign_pointer(sched_domains_numa_masks, masks);
>
> /* Compute default topology size */
> for (i = 0; sched_domain_topology[i].mask; i++);
>
> tl = kzalloc((i + nr_levels + 1) *
> sizeof(struct sched_domain_topology_level), GFP_KERNEL);
> - if (!tl)
> + if (!tl) {
> + for (i = 0; i < nr_levels; i++) {
> + for_each_node(j)
> + kfree(masks[i][j]);
> + kfree(masks[i]);
> + }
> + kfree(masks);
> return;
> + }
> +
> + rcu_assign_pointer(sched_domains_numa_masks, masks);
>
> /*
> * Copy the default topology bits..
prev parent reply other threads:[~2026-08-12 19:51 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-12 6:22 [PATCH v2] sched/topology: Free NUMA masks on topology allocation failure Fengyu Wang
2026-08-12 19:51 ` Tim Chen [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5adf2cf613a99399750da3d2ea1a095b228d33af.camel@linux.intel.com \
--to=tim.c.chen@linux.intel.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=huangsj@hygon.cn \
--cc=juri.lelli@redhat.com \
--cc=kprateek.nayak@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=sshegde@linux.ibm.com \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=wangfengyu@hygon.cn \
--cc=wujianyong@hygon.cn \
--cc=yu.c.chen@intel.com \
--cc=zhongyuan@hygon.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.