]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cgroup: reject cgroup names with ' '
authorAlban Crequy <alban.crequy@collabora.co.uk>
Mon, 18 Aug 2014 11:20:20 +0000 (12:20 +0100)
committerZefan Li <lizefan@huawei.com>
Mon, 1 Dec 2014 10:02:23 +0000 (18:02 +0800)
commit 71b1fb5c4473a5b1e601d41b109bdfe001ec82e0 upstream.

/proc/<pid>/cgroup contains one cgroup path on each line. If cgroup names are
allowed to contain "\n", applications cannot parse /proc/<pid>/cgroup safely.

Signed-off-by: Alban Crequy <alban.crequy@collabora.co.uk>
Signed-off-by: Tejun Heo <tj@kernel.org>
[lizf: Backported to 3.4:
 - adjust context
 - s/name/dentry->d_name.name/]
Signed-off-by: Zefan Li <lizefan@huawei.com>
kernel/cgroup.c

index 7c8f4f7d0c7152fe9d949790744352fff7e4a444..c776f8941175fe243c12bfd356dcc487a0827142 100644 (file)
@@ -3838,6 +3838,11 @@ static int cgroup_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
 {
        struct cgroup *c_parent = dentry->d_parent->d_fsdata;
 
+       /* Do not accept '\n' to prevent making /proc/<pid>/cgroup unparsable.
+        */
+       if (strchr(dentry->d_name.name, '\n'))
+               return -EINVAL;
+
        /* the vfs holds inode->i_mutex already */
        return cgroup_create(c_parent, dentry, mode | S_IFDIR);
 }