X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=kernel%2Fcgroup.c;h=3737a682cdf52229ee78efa5c637164ba60dcc28;hb=f1a745710f001e8c2eec6d525396083e1f4c389a;hp=3fb789f6df9431073c815939dac2015d04e705d6;hpb=9c7cb99a8202452d3e0440a5505c5c6d262771d9;p=~andy%2Flinux diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 3fb789f6df9..3737a682cdf 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -843,6 +843,11 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts) { char *token, *o = data ?: "all"; + unsigned long mask = (unsigned long)-1; + +#ifdef CONFIG_CPUSETS + mask = ~(1UL << cpuset_subsys_id); +#endif opts->subsys_bits = 0; opts->flags = 0; @@ -887,6 +892,15 @@ static int parse_cgroupfs_options(char *data, } } + /* + * Option noprefix was introduced just for backward compatibility + * with the old cpuset, so we allow noprefix only if mounting just + * the cpuset subsystem. + */ + if (test_bit(ROOT_NOPREFIX, &opts->flags) && + (opts->subsys_bits & mask)) + return -EINVAL; + /* We can't have an empty hierarchy */ if (!opts->subsys_bits) return -EINVAL;