mirror of https://gitee.com/openkylin/linux.git
cgroup: make css_next_child() skip missing csses
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>
This commit is contained in:
parent
2d8f243a5e
commit
3b281afbc3
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue