diff options
author | Seung-Woo Kim <sw0312.kim@samsung.com> | 2024-02-27 18:18:07 +0900 |
---|---|---|
committer | Seung-Woo Kim <sw0312.kim@samsung.com> | 2024-02-27 10:31:12 +0000 |
commit | 0cb791f04e9446644326ad09f22b9701ea11796d (patch) | |
tree | 0712163c8fa786a09c93f4eeaa3e48faa35637c1 | |
parent | 1fd25f5f88e058ef2a184e8bae3b82b749b6c67a (diff) | |
download | linux-rpi-0cb791f04e9446644326ad09f22b9701ea11796d.tar.gz linux-rpi-0cb791f04e9446644326ad09f22b9701ea11796d.tar.bz2 linux-rpi-0cb791f04e9446644326ad09f22b9701ea11796d.zip |
kdbus: Revert "cgroup: remove unused task_cgroup_path()"
This reverts commit d16b3af46679a1eb21652c37711a60d3d4e6b8c0.
kdbus of linux-tizen-modules-source has still usage of
task_cgroup_path(). To support linux-tizen-modules-source,
as workaround, revert back.
Change-Id: I0c943932d07ff0aa602f4a238bfa5839d74735d4
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
-rw-r--r-- | include/linux/cgroup.h | 1 | ||||
-rw-r--r-- | kernel/cgroup/cgroup.c | 39 |
2 files changed, 40 insertions, 0 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index b307013b9c6c..567c547cf371 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h @@ -118,6 +118,7 @@ int cgroup_rm_cftypes(struct cftype *cfts); void cgroup_file_notify(struct cgroup_file *cfile); void cgroup_file_show(struct cgroup_file *cfile, bool show); +int task_cgroup_path(struct task_struct *task, char *buf, size_t buflen); int cgroupstats_build(struct cgroupstats *stats, struct dentry *dentry); int proc_cgroup_show(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *tsk); diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 5165f5ccd1b4..49e602ad2f44 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -2355,6 +2355,45 @@ int cgroup_path_ns(struct cgroup *cgrp, char *buf, size_t buflen, EXPORT_SYMBOL_GPL(cgroup_path_ns); /** + * task_cgroup_path - cgroup path of a task in the first cgroup hierarchy + * @task: target task + * @buf: the buffer to write the path into + * @buflen: the length of the buffer + * + * Determine @task's cgroup on the first (the one with the lowest non-zero + * hierarchy_id) cgroup hierarchy and copy its path into @buf. This + * function grabs cgroup_mutex and shouldn't be used inside locks used by + * cgroup controller callbacks. + * + * Return value is the same as kernfs_path(). + */ +int task_cgroup_path(struct task_struct *task, char *buf, size_t buflen) +{ + struct cgroup_root *root; + struct cgroup *cgrp; + int hierarchy_id = 1; + int ret; + + cgroup_lock(); + spin_lock_irq(&css_set_lock); + + root = idr_get_next(&cgroup_hierarchy_idr, &hierarchy_id); + + if (root) { + cgrp = task_cgroup_from_root(task, root); + ret = cgroup_path_ns_locked(cgrp, buf, buflen, &init_cgroup_ns); + } else { + /* if no hierarchy exists, everyone is in "/" */ + ret = strscpy(buf, "/", buflen); + } + + spin_unlock_irq(&css_set_lock); + cgroup_unlock(); + return ret; +} +EXPORT_SYMBOL_GPL(task_cgroup_path); + +/** * cgroup_attach_lock - Lock for ->attach() * @lock_threadgroup: whether to down_write cgroup_threadgroup_rwsem * |