diff options
| author | Chen Ridong <chenridong@huawei.com> | 2025-11-14 02:08:47 +0000 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2025-11-20 16:25:26 -1000 |
| commit | b1bcaed1e39a9e0dfbe324a15d2ca4253deda316 (patch) | |
| tree | e019156c6a93257b43f679c4ed10fd40a59d1ee2 /tools/docs/checktransupdate.py | |
| parent | 318e18ed22e89397635e15095c014accaf47ed30 (diff) | |
cpuset: Treat cpusets in attaching as populated
Currently, the check for whether a partition is populated does not
account for tasks in the cpuset of attaching. This is a corner case
that can leave a task stuck in a partition with no effective CPUs.
The race condition occurs as follows:
cpu0 cpu1
//cpuset A with cpu N
migrate task p to A
cpuset_can_attach
// with effective cpus
// check ok
// cpuset_mutex is not held // clear cpuset.cpus.exclusive
// making effective cpus empty
update_exclusive_cpumask
// tasks_nocpu_error check ok
// empty effective cpus, partition valid
cpuset_attach
...
// task p stays in A, with non-effective cpus.
To fix this issue, this patch introduces cs_is_populated, which considers
tasks in the attaching cpuset. This new helper is used in validate_change
and partition_is_populated.
Fixes: e2d59900d936 ("cgroup/cpuset: Allow no-task partition to have empty cpuset.cpus.effective")
Signed-off-by: Chen Ridong <chenridong@huawei.com>
Reviewed-by: Waiman Long <longman@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'tools/docs/checktransupdate.py')
0 files changed, 0 insertions, 0 deletions
