• Daisuke Nishimura's avatar
    cgroup: notify_on_release may not be triggered in some cases · 66a0d04a
    Daisuke Nishimura authored
    commit 1f5320d5 upstream.
    
    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>
    Acked-by: default avatarLi Zefan <lizefan@huawei.com>
    Signed-off-by: default avatarDaisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    66a0d04a
cgroup.c 137 KB