]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit - kernel/cgroup/cgroup.c
cgroupns: Close race between cgroup_post_fork and copy_cgroup_ns
authorEric W. Biederman <ebiederm@xmission.com>
Fri, 15 Jul 2016 11:35:51 +0000 (06:35 -0500)
committerTejun Heo <tj@kernel.org>
Fri, 15 Jul 2016 11:56:38 +0000 (07:56 -0400)
commiteedd0f4cbf5f3b81e82649832091e1d9d53f0709
treeb806976542cf2731a4382414a28326706cb01f7c
parent7bd8830875bfa380c68f390efbad893293749324
cgroupns: Close race between cgroup_post_fork and copy_cgroup_ns

In most code paths involving cgroup migration cgroup_threadgroup_rwsem
is taken.  There are two exceptions:

- remove_tasks_in_empty_cpuset calls cgroup_transfer_tasks
- vhost_attach_cgroups_work calls cgroup_attach_task_all

With cgroup_threadgroup_rwsem held it is guaranteed that cgroup_post_fork
and copy_cgroup_ns will reference the same css_set from the process calling
fork.

Without such an interlock there process after fork could reference one
css_set from it's new cgroup namespace and another css_set from
task->cgroups, which semantically is nonsensical.

Cc: stable@vger.kernel.org
Fixes: a79a908fd2b0 ("cgroup: introduce cgroup namespaces")
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/cgroup.c