diff options
author | Tejun Heo <tj@kernel.org> | 2013-08-08 20:11:24 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2013-08-08 20:11:24 -0400 |
commit | f48e3924dca268c677c4e338e5d91ad9e6fe6b9e (patch) | |
tree | 8056aa4023c6a359851b27677560948835a59465 /kernel | |
parent | 3b287a505ef4024634beb12a93773254909d5dae (diff) |
cgroup: always use cgroup_next_child() to walk the children list
There are several places where the children list is accessed directly.
This patch converts those places to use cgroup_next_child(). This
will help updating the hierarchy iterators to use @css instead of
@cgrp.
While cgroup_next_child() can be heavy in pathological cases - e.g. a
lot of dead children, this shouldn't cause any noticeable behavior
differences.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/cgroup.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c index dd55244952bd..2b7354faaca7 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c | |||
@@ -3112,7 +3112,7 @@ struct cgroup *cgroup_next_descendant_pre(struct cgroup *pos, | |||
3112 | pos = cgroup; | 3112 | pos = cgroup; |
3113 | 3113 | ||
3114 | /* visit the first child if exists */ | 3114 | /* visit the first child if exists */ |
3115 | next = list_first_or_null_rcu(&pos->children, struct cgroup, sibling); | 3115 | next = cgroup_next_child(NULL, pos); |
3116 | if (next) | 3116 | if (next) |
3117 | return next; | 3117 | return next; |
3118 | 3118 | ||
@@ -3151,7 +3151,7 @@ struct cgroup *cgroup_rightmost_descendant(struct cgroup *pos) | |||
3151 | last = pos; | 3151 | last = pos; |
3152 | /* ->prev isn't RCU safe, walk ->next till the end */ | 3152 | /* ->prev isn't RCU safe, walk ->next till the end */ |
3153 | pos = NULL; | 3153 | pos = NULL; |
3154 | list_for_each_entry_rcu(tmp, &last->children, sibling) | 3154 | cgroup_for_each_child(tmp, last) |
3155 | pos = tmp; | 3155 | pos = tmp; |
3156 | } while (pos); | 3156 | } while (pos); |
3157 | 3157 | ||
@@ -3165,8 +3165,7 @@ static struct cgroup *cgroup_leftmost_descendant(struct cgroup *pos) | |||
3165 | 3165 | ||
3166 | do { | 3166 | do { |
3167 | last = pos; | 3167 | last = pos; |
3168 | pos = list_first_or_null_rcu(&pos->children, struct cgroup, | 3168 | pos = cgroup_next_child(NULL, pos); |
3169 | sibling); | ||
3170 | } while (pos); | 3169 | } while (pos); |
3171 | 3170 | ||
3172 | return last; | 3171 | return last; |