Patchwork [3.5.yuz,extended,stable] Patch "cgroup: notify_on_release may not be triggered in some cases" has been added to staging queue

mail settings
Submitter Herton Ronaldo Krzesinski
Date Nov. 22, 2012, 4:46 a.m.
Message ID <>
Download mbox | patch
Permalink /patch/200944/
State New
Headers show


Herton Ronaldo Krzesinski - Nov. 22, 2012, 4:46 a.m.
This is a note to let you know that I have just added a patch titled

    cgroup: notify_on_release may not be triggered in some cases

to the linux-3.5.y-queue branch of the 3.5.yuz extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.yuz tree, see



From a5ada15c0391a5a2d41d2e158e3e94fa1e2430b3 Mon Sep 17 00:00:00 2001
From: Daisuke Nishimura <>
Date: Thu, 4 Oct 2012 16:37:16 +0900
Subject: [PATCH] cgroup: notify_on_release may not be triggered in some cases

commit 1f5320d5972aa50d3e8d2b227b636b370e608359 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 <>
Acked-by: Li Zefan <>
Signed-off-by: Daisuke Nishimura <>
Signed-off-by: Tejun Heo <>
Signed-off-by: Herton Ronaldo Krzesinski <>
 kernel/cgroup.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)



diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 15462a0..63c9596 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1927,9 +1927,8 @@  static void cgroup_task_migrate(struct cgroup *cgrp, struct cgroup *oldcgrp,
 	 * trading it for newcg is protected by cgroup_mutex, we're safe to drop
 	 * it here; it will be freed under RCU.
-	put_css_set(oldcg);
 	set_bit(CGRP_RELEASABLE, &oldcgrp->flags);
+	put_css_set(oldcg);