summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2014-02-13 06:58:38 -0500
committerTejun Heo <tj@kernel.org>2014-02-13 06:58:38 -0500
commitd3ba07c3aa9ae3e03329b0a7f1a067c0647aa2af (patch)
tree17a4968e339822a520f864fe4127be39e0563f5c
parenta755180bab81c038a6989d7ab746c702f1b3ec03 (diff)
downloadblackbird-op-linux-d3ba07c3aa9ae3e03329b0a7f1a067c0647aa2af.tar.gz
blackbird-op-linux-d3ba07c3aa9ae3e03329b0a7f1a067c0647aa2af.zip
cgroup: disallow xattr, release_agent and name if sane_behavior
Disallow more mount options if sane_behavior. Note that xattr used to generate warning. While at it, simplify option check in cgroup_mount() and update sane_behavior comment in cgroup.h. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Li Zefan <lizefan@huawei.com>
-rw-r--r--include/linux/cgroup.h6
-rw-r--r--kernel/cgroup.c14
2 files changed, 7 insertions, 13 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index 298d616e8f40..5f669ca0ee36 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -227,8 +227,8 @@ enum {
*
* The followings are the behaviors currently affected this flag.
*
- * - Mount options "noprefix" and "clone_children" are disallowed.
- * Also, cgroupfs file cgroup.clone_children is not created.
+ * - Mount options "noprefix", "xattr", "clone_children",
+ * "release_agent" and "name" are disallowed.
*
* - When mounting an existing superblock, mount options should
* match.
@@ -246,7 +246,7 @@ enum {
* - "release_agent" and "notify_on_release" are removed.
* Replacement notification mechanism will be implemented.
*
- * - "xattr" mount option is deprecated. kernfs always enables it.
+ * - "cgroup.clone_children" is removed.
*
* - cpuset: tasks will be kept in empty cpusets when hotplug happens
* and take masks of ancestors with non-empty cpus/mems, instead of
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 03845c5d082b..079c478a4735 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1226,18 +1226,12 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)
if (opts->flags & CGRP_ROOT_SANE_BEHAVIOR) {
pr_warning("cgroup: sane_behavior: this is still under development and its behaviors will change, proceed at your own risk\n");
- if (opts->flags & CGRP_ROOT_NOPREFIX) {
- pr_err("cgroup: sane_behavior: noprefix is not allowed\n");
+ if ((opts->flags & (CGRP_ROOT_NOPREFIX | CGRP_ROOT_XATTR)) ||
+ opts->cpuset_clone_children || opts->release_agent ||
+ opts->name) {
+ pr_err("cgroup: sane_behavior: noprefix, xattr, clone_children, release_agent and name are not allowed\n");
return -EINVAL;
}
-
- if (opts->cpuset_clone_children) {
- pr_err("cgroup: sane_behavior: clone_children is not allowed\n");
- return -EINVAL;
- }
-
- if (opts->flags & CGRP_ROOT_XATTR)
- pr_warning("cgroup: sane_behavior: xattr is always available, flag unnecessary\n");
}
/*
OpenPOWER on IntegriCloud