Loading include/linux/cgroup.h +1 −1 Original line number Diff line number Diff line Loading @@ -709,7 +709,7 @@ struct cgroup *cgroup_rightmost_descendant(struct cgroup *pos); * * If a subsystem synchronizes against the parent in its ->css_online() and * before starting iterating, and synchronizes against @pos on each * iteration, any descendant cgroup which finished ->css_offline() is * iteration, any descendant cgroup which finished ->css_online() is * guaranteed to be visible in the future iterations. * * In other words, the following guarantees that a descendant can't escape Loading kernel/cgroup.c +8 −10 Original line number Diff line number Diff line Loading @@ -2736,13 +2736,14 @@ static int cgroup_add_file(struct cgroup *cgrp, struct cgroup_subsys *subsys, goto out; } mode = cgroup_file_mode(cft); error = cgroup_create_file(dentry, mode | S_IFREG, cgrp->root->sb); if (!error) { cfe->type = (void *)cft; cfe->dentry = dentry; dentry->d_fsdata = cfe; simple_xattrs_init(&cfe->xattrs); mode = cgroup_file_mode(cft); error = cgroup_create_file(dentry, mode | S_IFREG, cgrp->root->sb); if (!error) { list_add_tail(&cfe->node, &parent->files); cfe = NULL; } Loading Loading @@ -2990,11 +2991,8 @@ struct cgroup *cgroup_next_descendant_pre(struct cgroup *pos, WARN_ON_ONCE(!rcu_read_lock_held()); /* if first iteration, pretend we just visited @cgroup */ if (!pos) { if (list_empty(&cgroup->children)) return NULL; if (!pos) pos = cgroup; } /* visit the first child if exists */ next = list_first_or_null_rcu(&pos->children, struct cgroup, sibling); Loading @@ -3002,14 +3000,14 @@ struct cgroup *cgroup_next_descendant_pre(struct cgroup *pos, return next; /* no child, visit my or the closest ancestor's next sibling */ do { while (pos != cgroup) { next = list_entry_rcu(pos->sibling.next, struct cgroup, sibling); if (&next->sibling != &pos->parent->children) return next; pos = pos->parent; } while (pos != cgroup); } return NULL; } Loading Loading
include/linux/cgroup.h +1 −1 Original line number Diff line number Diff line Loading @@ -709,7 +709,7 @@ struct cgroup *cgroup_rightmost_descendant(struct cgroup *pos); * * If a subsystem synchronizes against the parent in its ->css_online() and * before starting iterating, and synchronizes against @pos on each * iteration, any descendant cgroup which finished ->css_offline() is * iteration, any descendant cgroup which finished ->css_online() is * guaranteed to be visible in the future iterations. * * In other words, the following guarantees that a descendant can't escape Loading
kernel/cgroup.c +8 −10 Original line number Diff line number Diff line Loading @@ -2736,13 +2736,14 @@ static int cgroup_add_file(struct cgroup *cgrp, struct cgroup_subsys *subsys, goto out; } mode = cgroup_file_mode(cft); error = cgroup_create_file(dentry, mode | S_IFREG, cgrp->root->sb); if (!error) { cfe->type = (void *)cft; cfe->dentry = dentry; dentry->d_fsdata = cfe; simple_xattrs_init(&cfe->xattrs); mode = cgroup_file_mode(cft); error = cgroup_create_file(dentry, mode | S_IFREG, cgrp->root->sb); if (!error) { list_add_tail(&cfe->node, &parent->files); cfe = NULL; } Loading Loading @@ -2990,11 +2991,8 @@ struct cgroup *cgroup_next_descendant_pre(struct cgroup *pos, WARN_ON_ONCE(!rcu_read_lock_held()); /* if first iteration, pretend we just visited @cgroup */ if (!pos) { if (list_empty(&cgroup->children)) return NULL; if (!pos) pos = cgroup; } /* visit the first child if exists */ next = list_first_or_null_rcu(&pos->children, struct cgroup, sibling); Loading @@ -3002,14 +3000,14 @@ struct cgroup *cgroup_next_descendant_pre(struct cgroup *pos, return next; /* no child, visit my or the closest ancestor's next sibling */ do { while (pos != cgroup) { next = list_entry_rcu(pos->sibling.next, struct cgroup, sibling); if (&next->sibling != &pos->parent->children) return next; pos = pos->parent; } while (pos != cgroup); } return NULL; } Loading