cgroup: disallow xattr, release_agent and name if sane_behavior
authorTejun Heo <tj@kernel.org>
Thu, 13 Feb 2014 11:58:38 +0000 (06:58 -0500)
committerTejun Heo <tj@kernel.org>
Thu, 13 Feb 2014 11:58:38 +0000 (06:58 -0500)
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>
include/linux/cgroup.h
kernel/cgroup.c

index 298d616..5f669ca 100644 (file)
@@ -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
index 03845c5..079c478 100644 (file)
@@ -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");
        }
 
        /*