ALSA: hda - Fix input pinctl for ALC882 auto mode
[pandora-kernel.git] / kernel / cgroup.c
index a7267bf..3737a68 100644 (file)
@@ -46,6 +46,7 @@
 #include <linux/cgroupstats.h>
 #include <linux/hash.h>
 #include <linux/namei.h>
+#include <linux/smp_lock.h>
 
 #include <asm/atomic.h>
 
@@ -842,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;
@@ -886,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;
@@ -900,6 +915,7 @@ static int cgroup_remount(struct super_block *sb, int *flags, char *data)
        struct cgroup *cgrp = &root->top_cgroup;
        struct cgroup_sb_opts opts;
 
+       lock_kernel();
        mutex_lock(&cgrp->dentry->d_inode->i_mutex);
        mutex_lock(&cgroup_mutex);
 
@@ -927,6 +943,7 @@ static int cgroup_remount(struct super_block *sb, int *flags, char *data)
        kfree(opts.release_agent);
        mutex_unlock(&cgroup_mutex);
        mutex_unlock(&cgrp->dentry->d_inode->i_mutex);
+       unlock_kernel();
        return ret;
 }