summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2014-05-13 18:16:22 +0200
committerTejun Heo <tj@kernel.org>2014-05-13 18:16:22 +0200
commitb7fc5ad235936379fae67a9f7b50bb53487a1a3a (patch)
tree90cb1aa86cf485d3e9d93942426d6ee14e2d14c4
parentcgroup: convert "tasks" and "cgroup.procs" handle to use cftype->write() (diff)
downloadlinux-b7fc5ad235936379fae67a9f7b50bb53487a1a3a.tar.xz
linux-b7fc5ad235936379fae67a9f7b50bb53487a1a3a.zip
cgroup: remove cgroup->control_kn
Now that cgroup_subtree_control_write() has access to the associated kernfs_open_file and thus the kernfs_node, there's no need to cache it in cgroup->control_kn on creation. Remove cgroup->control_kn and use @of->kn directly. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Li Zefan <lizefan@huawei.com>
-rw-r--r--include/linux/cgroup.h1
-rw-r--r--kernel/cgroup.c8
2 files changed, 3 insertions, 6 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index 08eb71ee600b..aa7353deaaf3 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -177,7 +177,6 @@ struct cgroup {
struct cgroup *parent; /* my parent */
struct kernfs_node *kn; /* cgroup kernfs entry */
- struct kernfs_node *control_kn; /* kn for "cgroup.subtree_control" */
struct kernfs_node *populated_kn; /* kn for "cgroup.subtree_populated" */
/*
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 9a48c117ebf1..94d259bcd2b9 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -2580,7 +2580,7 @@ static ssize_t cgroup_subtree_control_write(struct kernfs_open_file *of,
* active_ref protection.
*/
cgroup_get(cgrp);
- kernfs_break_active_protection(cgrp->control_kn);
+ kernfs_break_active_protection(of->kn);
mutex_lock(&cgroup_tree_mutex);
@@ -2697,7 +2697,7 @@ out_unlock:
out_unlock_tree:
mutex_unlock(&cgroup_tree_mutex);
out_unbreak:
- kernfs_unbreak_active_protection(cgrp->control_kn);
+ kernfs_unbreak_active_protection(of->kn);
cgroup_put(cgrp);
return ret ?: nbytes;
@@ -2887,9 +2887,7 @@ static int cgroup_add_file(struct cgroup *cgrp, struct cftype *cft)
return ret;
}
- if (cft->seq_show == cgroup_subtree_control_show)
- cgrp->control_kn = kn;
- else if (cft->seq_show == cgroup_populated_show)
+ if (cft->seq_show == cgroup_populated_show)
cgrp->populated_kn = kn;
return 0;
}