diff options
author | Tejun Heo <tj@kernel.org> | 2023-03-29 08:39:46 -1000 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2023-03-29 08:39:46 -1000 |
commit | 5dcad50636a5d416135bafae86fc4979b911a7c6 (patch) | |
tree | 09eb427e7f0d959c8dbaf7bc6c96ddffbe016fdd /kernel | |
parent | 8e4645226b4931e96d55546a1fb3863aa50b5e62 (diff) | |
parent | 292fd843de26c551856e66faf134512c52dd78b4 (diff) | |
download | linux-stable-5dcad50636a5d416135bafae86fc4979b911a7c6.tar.gz linux-stable-5dcad50636a5d416135bafae86fc4979b911a7c6.tar.bz2 linux-stable-5dcad50636a5d416135bafae86fc4979b911a7c6.zip |
Merge branch 'for-6.3-fixes' into for-6.4
To receive 292fd843de26 ("cgroup/cpuset: Fix partition root's cpuset.cpus
update bug") in preparation for further cpuset updates.
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/cgroup/cpuset.c | 12 | ||||
-rw-r--r-- | kernel/cgroup/rstat.c | 4 |
2 files changed, 11 insertions, 5 deletions
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index 0241b07d6f21..8472c711eb1b 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -1513,7 +1513,7 @@ static int update_parent_subparts_cpumask(struct cpuset *cs, int cmd, spin_unlock_irq(&callback_lock); if (adding || deleting) - update_tasks_cpumask(parent, tmp->new_cpus); + update_tasks_cpumask(parent, tmp->addmask); /* * Set or clear CS_SCHED_LOAD_BALANCE when partcmd_update, if necessary. @@ -1770,10 +1770,13 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs, /* * Use the cpumasks in trialcs for tmpmasks when they are pointers * to allocated cpumasks. + * + * Note that update_parent_subparts_cpumask() uses only addmask & + * delmask, but not new_cpus. */ tmp.addmask = trialcs->subparts_cpus; tmp.delmask = trialcs->effective_cpus; - tmp.new_cpus = trialcs->cpus_allowed; + tmp.new_cpus = NULL; #endif retval = validate_change(cs, trialcs); @@ -1838,6 +1841,11 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs, } spin_unlock_irq(&callback_lock); +#ifdef CONFIG_CPUMASK_OFFSTACK + /* Now trialcs->cpus_allowed is available */ + tmp.new_cpus = trialcs->cpus_allowed; +#endif + /* effective_cpus will be updated here */ update_cpumasks_hier(cs, &tmp, false); diff --git a/kernel/cgroup/rstat.c b/kernel/cgroup/rstat.c index 831f1f472bb8..0a2b4967e333 100644 --- a/kernel/cgroup/rstat.c +++ b/kernel/cgroup/rstat.c @@ -457,9 +457,7 @@ static void root_cgroup_cputime(struct cgroup_base_stat *bstat) struct task_cputime *cputime = &bstat->cputime; int i; - cputime->stime = 0; - cputime->utime = 0; - cputime->sum_exec_runtime = 0; + memset(bstat, 0, sizeof(*bstat)); for_each_possible_cpu(i) { struct kernel_cpustat kcpustat; u64 *cpustat = kcpustat.cpustat; |