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: 4a74e41888 ("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>
This commit is contained in:
Waiman Long 2026-10-19 14:10:15 -04:00 committed by Tejun Heo
parent 9527ff78a4
commit 2c0a5742fc

View File

@ -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)