From: Waiman Long Date: Tue, 11 Apr 2023 13:36:00 +0000 (-0400) Subject: cgroup/cpuset: Make cpuset_attach_task() skip subpartitions CPUs for top_cpuset X-Git-Tag: v6.3-rc7~18^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7e27cb6ad4d85fc8bac2a2a896da62ef66b8598e;p=tomoyo%2Ftomoyo-test1.git cgroup/cpuset: Make cpuset_attach_task() skip subpartitions CPUs for top_cpuset It is found that attaching a task to the top_cpuset does not currently ignore CPUs allocated to subpartitions in cpuset_attach_task(). So the code is changed to fix that. Signed-off-by: Waiman Long Reviewed-by: Michal Koutný Signed-off-by: Tejun Heo --- diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index 166a45019f66..505d86b16642 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -2535,7 +2535,8 @@ static void cpuset_attach_task(struct cpuset *cs, struct task_struct *task) if (cs != &top_cpuset) guarantee_online_cpus(task, cpus_attach); else - cpumask_copy(cpus_attach, task_cpu_possible_mask(task)); + cpumask_andnot(cpus_attach, task_cpu_possible_mask(task), + cs->subparts_cpus); /* * can_attach beforehand should guarantee that this doesn't * fail. TODO: have a better way to handle failure here