diff options
author | Alex Shi <alex.shi@linaro.org> | 2016-09-19 17:38:55 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2016-09-19 17:38:55 +0800 |
commit | 7ddc655ad909372848a3e7995e222c2b9224c2e0 (patch) | |
tree | a68d86598e6527e24197c0d43169807eb3a7f081 /kernel/cpuset.c | |
parent | 266fa7380746e8d998691be98b311dc426e4c4ce (diff) | |
parent | 04cb720142764ebf3786eba1feb8fc4b6ef87fcf (diff) |
Merge tag 'v4.1.33' into linux-linaro-lsk-v4.1lsk-v4.1-16.09
This is the 4.1.33 stable release
Diffstat (limited to 'kernel/cpuset.c')
-rw-r--r-- | kernel/cpuset.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index e96264f3f1e1..89ba25b164db 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c @@ -2051,6 +2051,20 @@ static void cpuset_bind(struct cgroup_subsys_state *root_css) mutex_unlock(&cpuset_mutex); } +/* + * Make sure the new task conform to the current state of its parent, + * which could have been changed by cpuset just after it inherits the + * state from the parent and before it sits on the cgroup's task list. + */ +void cpuset_fork(struct task_struct *task) +{ + if (task_css_is_root(task, cpuset_cgrp_id)) + return; + + set_cpus_allowed_ptr(task, ¤t->cpus_allowed); + task->mems_allowed = current->mems_allowed; +} + struct cgroup_subsys cpuset_cgrp_subsys = { .css_alloc = cpuset_css_alloc, .css_online = cpuset_css_online, @@ -2060,6 +2074,7 @@ struct cgroup_subsys cpuset_cgrp_subsys = { .cancel_attach = cpuset_cancel_attach, .attach = cpuset_attach, .bind = cpuset_bind, + .fork = cpuset_fork, .legacy_cftypes = files, .early_init = 1, }; |