diff options
| author | Waiman Long <longman@redhat.com> | 2026-10-19 14:10:15 -0400 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-10-19 13:08:19 -1000 |
| commit | 2c0a5742fc459cd8416607acff4a38a1abcb2e1b (patch) | |
| tree | 76c98b4b78e47d287b2cfc362933475a8eda602f /kernel | |
| parent | 9527ff78a413e2b4089e78953926af77b98fd43f (diff) | |
| download | linux-2c0a5742fc459cd8416607acff4a38a1abcb2e1b.tar.gz linux-2c0a5742fc459cd8416607acff4a38a1abcb2e1b.zip | |
cgroup/cpuset: Do housekeeping check before converting invalid partition to valid
When a hotplug event happens or when update_cpumasks_hier() is called, an
invalid partition may be converted back to valid. However check against
housekeeping conflict isn't being done which can lead to a partition
state that violates the housekeeping rules. Update the code to allow
reviving an invalid partition only if it can pass the housekeeping check.
Fixes: 4a74e418881f ("cgroup/cpuset: Check partition conflict with housekeeping setup")
Reviewed-by: Guopeng Zhang <zhangguopeng@kylinos.cn>
Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/cgroup/cpuset.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index da4b4cbcbe12..b8a721bbe50d 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -1981,9 +1981,15 @@ static int update_parent_effective_cpumask(struct cpuset *cs, int cmd, bool exclusive = true; /* - * Convert invalid partition to valid has to - * pass the cpu exclusivity test. + * Convert invalid partition to valid has to pass the + * cpu exclusivity test as well as the housekeeping + * check. */ + if (prstate_housekeeping_conflict(cs->partition_root_state, + parent_prs, xcpus, NULL)) { + part_error = PERR_HKEEPING; + goto write_error; + } rcu_read_lock(); cpuset_for_each_child(child, css, parent) { if (child == cs) |
