Skip to content

Commit

Permalink
cgroup: make css_next_child() skip missing csses
Browse files Browse the repository at this point in the history
css_next_child() walks the children of the specified css.  It does
this by finding the next cgroup and then returning the requested css.
On the default unified hierarchy, a cgroup may not have a css
associated with it even if the hierarchy has the subsystem enabled.
This patch updates css_next_child() so that it skips children without
the requested css associated.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
  • Loading branch information
Tejun Heo committed Apr 23, 2014
1 parent 2d8f243 commit 3b281af
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions kernel/cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -2708,10 +2708,19 @@ css_next_child(struct cgroup_subsys_state *pos_css,
break;
}

if (&next->sibling == &cgrp->children)
return NULL;
/*
* @next, if not pointing to the head, can be dereferenced and is
* the next sibling; however, it might have @ss disabled. If so,
* fast-forward to the next enabled one.
*/
while (&next->sibling != &cgrp->children) {
struct cgroup_subsys_state *next_css = cgroup_css(next, parent_css->ss);

return cgroup_css(next, parent_css->ss);
if (next_css)
return next_css;
next = list_entry_rcu(next->sibling.next, struct cgroup, sibling);
}
return NULL;
}

/**
Expand Down

0 comments on commit 3b281af

Please sign in to comment.