* [GIT PULL] cgroup fixes for v3.12-rc6
@ 2013-10-21 10:49 Tejun Heo
0 siblings, 0 replies; only message in thread
From: Tejun Heo @ 2013-10-21 10:49 UTC (permalink / raw)
To: Linus Torvalds
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, Li Zefan,
cgroups-u79uwXL29TY76Z2rM5mHXA
Hello, Linus.
Two late fixes for cgroup. One fixes descendant walk introduced
during this rc1 cycle. The other fixes a post 3.9 bug during task
attach which can lead to hang. Both fixes are critical and the fixes
are relatively straight-forward.
The two fixes are available in the following branch
git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git for-3.12-fixes
for you to fetch changes up to ea84753c98a7ac6b74e530b64c444a912b3835ca:
cgroup: fix to break the while loop in cgroup_attach_task() correctly (2013-10-13 16:07:10 -0400)
Thanks.
----------------------------------------------------------------
Anjana V Kumar (1):
cgroup: fix to break the while loop in cgroup_attach_task() correctly
Tejun Heo (1):
cgroup: fix cgroup post-order descendant walk of empty subtree
kernel/cgroup.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index e0aeb32..1bf4f7a1 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -2038,7 +2038,7 @@ static int cgroup_attach_task(struct cgroup *cgrp, struct task_struct *tsk,
/* @tsk either already exited or can't exit until the end */
if (tsk->flags & PF_EXITING)
- continue;
+ goto next;
/* as per above, nr_threads may decrease, but not increase. */
BUG_ON(i >= group_size);
@@ -2046,7 +2046,7 @@ static int cgroup_attach_task(struct cgroup *cgrp, struct task_struct *tsk,
ent.cgrp = task_cgroup_from_root(tsk, root);
/* nothing to do if this task is already in the cgroup */
if (ent.cgrp == cgrp)
- continue;
+ goto next;
/*
* saying GFP_ATOMIC has no effect here because we did prealloc
* earlier, but it's good form to communicate our expectations.
@@ -2054,7 +2054,7 @@ static int cgroup_attach_task(struct cgroup *cgrp, struct task_struct *tsk,
retval = flex_array_put(group, i, &ent, GFP_ATOMIC);
BUG_ON(retval != 0);
i++;
-
+ next:
if (!threadgroup)
break;
} while_each_thread(leader, tsk);
@@ -3187,11 +3187,9 @@ css_next_descendant_post(struct cgroup_subsys_state *pos,
WARN_ON_ONCE(!rcu_read_lock_held());
- /* if first iteration, visit the leftmost descendant */
- if (!pos) {
- next = css_leftmost_descendant(root);
- return next != root ? next : NULL;
- }
+ /* if first iteration, visit leftmost descendant which may be @root */
+ if (!pos)
+ return css_leftmost_descendant(root);
/* if we visited @root, we're done */
if (pos == root)
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2013-10-21 10:49 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-21 10:49 [GIT PULL] cgroup fixes for v3.12-rc6 Tejun Heo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).