cgroup: notify_on_release may not be triggered in some cases
authorDaisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Thu, 4 Oct 2012 07:37:16 +0000 (16:37 +0900)
committerTejun Heo <tj@kernel.org>
Wed, 17 Oct 2012 00:09:36 +0000 (17:09 -0700)
commit1f5320d5972aa50d3e8d2b227b636b370e608359
treea36f1ef6a2f2f72d81e5aef43c0089bb62056bf5
parentddffeb8c4d0331609ef2581d84de4d763607bd37
cgroup: notify_on_release may not be triggered in some cases

notify_on_release must be triggered when the last process in a cgroup is
move to another. But if the first(and only) process in a cgroup is moved to
another, notify_on_release is not triggered.

# mkdir /cgroup/cpu/SRC
# mkdir /cgroup/cpu/DST
#
# echo 1 >/cgroup/cpu/SRC/notify_on_release
# echo 1 >/cgroup/cpu/DST/notify_on_release
#
# sleep 300 &
[1] 8629
#
# echo 8629 >/cgroup/cpu/SRC/tasks
# echo 8629 >/cgroup/cpu/DST/tasks
-> notify_on_release for /SRC must be triggered at this point,
   but it isn't.

This is because put_css_set() is called before setting CGRP_RELEASABLE
in cgroup_task_migrate(), and is a regression introduce by the
commit:74a1166d(cgroups: make procs file writable), which was merged
into v3.0.

Cc: Ben Blum <bblum@andrew.cmu.edu>
Cc: <stable@vger.kernel.org> # v3.0.x and later
Acked-by: Li Zefan <lizefan@huawei.com>
Signed-off-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/cgroup.c