diff options
author | JP Kobryn <inwardvessel@gmail.com> | 2025-05-14 17:19:33 -0700 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2025-05-19 10:21:24 -1000 |
commit | 541a4219bd66bef56d93dbd306dc64a4d70ae99e (patch) | |
tree | d93048d2570693b3b235bda740e4e0cded0ac0ee | |
parent | b2713a5ad396179e28bfbab892f3fcb9bdf04ce0 (diff) |
cgroup: compare css to cgroup::self in helper for distingushing css
Adjust the implementation of css_is_cgroup() so that it compares the given
css to cgroup::self. Rename the function to css_is_self() in order to
reflect that. Change the existing css->ss NULL check to a warning in the
true branch. Finally, adjust call sites to use the new function name.
Signed-off-by: JP Kobryn <inwardvessel@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
-rw-r--r-- | include/linux/cgroup.h | 10 | ||||
-rw-r--r-- | kernel/cgroup/cgroup.c | 8 |
2 files changed, 12 insertions, 6 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 1f5b0a4a3356..989c08b09691 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h @@ -347,9 +347,15 @@ static inline bool css_is_dying(struct cgroup_subsys_state *css) return css->flags & CSS_DYING; } -static inline bool css_is_cgroup(struct cgroup_subsys_state *css) +static inline bool css_is_self(struct cgroup_subsys_state *css) { - return css->ss == NULL; + if (css == &css->cgroup->self) { + /* cgroup::self should not have subsystem association */ + WARN_ON(css->ss != NULL); + return true; + } + + return false; } static inline void cgroup_get(struct cgroup *cgrp) diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 83b35c22da95..ce6a60b9b585 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -1706,7 +1706,7 @@ static void css_clear_dir(struct cgroup_subsys_state *css) css->flags &= ~CSS_VISIBLE; - if (css_is_cgroup(css)) { + if (css_is_self(css)) { if (cgroup_on_dfl(cgrp)) { cgroup_addrm_files(css, cgrp, cgroup_base_files, false); @@ -1738,7 +1738,7 @@ static int css_populate_dir(struct cgroup_subsys_state *css) if (css->flags & CSS_VISIBLE) return 0; - if (css_is_cgroup(css)) { + if (css_is_self(css)) { if (cgroup_on_dfl(cgrp)) { ret = cgroup_addrm_files(css, cgrp, cgroup_base_files, true); @@ -5406,7 +5406,7 @@ static void css_free_rwork_fn(struct work_struct *work) percpu_ref_exit(&css->refcnt); - if (ss) { + if (!css_is_self(css)) { /* css free path */ struct cgroup_subsys_state *parent = css->parent; int id = css->id; @@ -5460,7 +5460,7 @@ static void css_release_work_fn(struct work_struct *work) css->flags |= CSS_RELEASED; list_del_rcu(&css->sibling); - if (ss) { + if (!css_is_self(css)) { struct cgroup *parent_cgrp; /* css release path */ |