[PATCH 06/17] cgroup/cpuset: Validate type changes against owned CPUs
Guopeng Zhang <[email protected]>
| Newsgroups | org.kernel.vger.cgroups,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest |
|---|---|
| Message-ID | <[email protected]> |
From: Guopeng Zhang <[email protected]> update_prstate() checks effective_xcpus against the housekeeping masks before changing a partition between root and isolated. effective_xcpus also contains CPUs granted to valid child partitions, although those CPUs are not affected by the parent's type change. A child-owned CPU can therefore reject an otherwise valid change. Run the nohz_full and boot-domain housekeeping checks against the mask of CPUs owned by the partition instead. Fixes: 103b08709e8a ("cgroup/cpuset: Fail if isolated and nohz_full don't leave any housekeeping") Fixes: b1034a690129 ("cgroup/cpuset: Ensure domain isolated CPUs stay in root or isolated partition") Signed-off-by: Guopeng Zhang <[email protected]> --- kernel/cgroup/cpuset.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index 468272baadb2..853942c1afeb 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -3019,8 +3019,8 @@ static int update_prstate(struct cpuset *cs, int new_prs) */ compute_partition_owned_cpumask(cs, tmpmask.new_cpus); if (((new_prs == PRS_ISOLATED) && - !isolated_cpus_can_update(cs->effective_xcpus, NULL)) || - prstate_housekeeping_conflict(new_prs, cs->effective_xcpus)) + !isolated_cpus_can_update(tmpmask.new_cpus, NULL)) || + prstate_housekeeping_conflict(new_prs, tmpmask.new_cpus)) err = PERR_HKEEPING; else isolcpus_updated = true; -- 2.43.0