diff options
| author | Waiman Long <longman@redhat.com> | 2026-11-09 14:09:54 -0500 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-11-10 09:21:13 -1000 |
| commit | a25cc4c75fdd8921f160bc3950665889eba7374b (patch) | |
| tree | 005d382fa083aa3290dc7137e8af58e62a2a0617 /scripts/Makefile.thinlto | |
| parent | 8ef0c923104b4ba38249b364867d779f5a9b5dbe (diff) | |
| download | linux-next-a25cc4c75fdd8921f160bc3950665889eba7374b.tar.gz linux-next-a25cc4c75fdd8921f160bc3950665889eba7374b.zip | |
cgroup/cpuset: Protect current->mems_allowed read in cpuset_fork()
Reading mems_allowed of the current task outside of cpuset_mutex critical
section should be protected by using mems_allowed_seq seqlock as the
nodemask can be updated concurrently leading to a torn read. Such
protection is currently not implemented in cpuset_fork() for the
!CLONE_INTO_CGROUP case. As a result, the child task may inherit an empty
or corrupted mems_allowed nodemask. This violates NUMA memory policy
constraints and causes subsequent page allocations to unconditionally
fail, potentially leading to crashes or spurious OOM killer invocations
for the child task.
Fix that by using a read_mems_allowed_begin/read_mems_allowed_retry()
loop to protect the mems_allowed read.
Fixes: 06f4e9489891 ("cpuset: make sure new tasks conform to the current config of the cpuset")
Reported-by: Sashiko <sashiko-bot@kernel.org>
Link: https://sashiko.dev/#/bug/linux-601100b4-fa77-45fd-99f9-bfbd4385201f
Signed-off-by: Waiman Long <longman@redhat.com>
Reviewed-by: Ridong Chen <ridong.chen@linux.dev>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
