summaryrefslogtreecommitdiff
path: root/kernel/cpuset.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/cpuset.c')
-rw-r--r--kernel/cpuset.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index a841b5c01ef..6012e326e85 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -1338,10 +1338,14 @@ static void cpuset_attach(struct cgroup_subsys *ss,
struct cpuset *oldcs = cgroup_cs(oldcont);
int err;
- mutex_lock(&callback_mutex);
- guarantee_online_cpus(cs, &cpus);
+ if (cs == &top_cpuset) {
+ cpus = cpu_possible_map;
+ } else {
+ mutex_lock(&callback_mutex);
+ guarantee_online_cpus(cs, &cpus);
+ mutex_unlock(&callback_mutex);
+ }
err = set_cpus_allowed_ptr(tsk, &cpus);
- mutex_unlock(&callback_mutex);
if (err)
return;