Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b281afb authored by Tejun Heo's avatar Tejun Heo
Browse files

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: default avatarTejun Heo <tj@kernel.org>
Acked-by: default avatarLi Zefan <lizefan@huawei.com>
parent 2d8f243a
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -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;
}

/**