cgroup: initialize xattr before calling d_instantiate()
cgroup_create_file() calls d_instantiate(), which may decide to look at the xattrs on the file. Smack always does this and SELinux can be configured to do so. But cgroup_add_file() didn't initialize xattrs before calling cgroup_create_file(), which finally leads to dereferencing NULL dentry->d_fsdata. This bug has been there since cgroup xattr was introduced. Cc: <stable@vger.kernel.org> # 3.8.x Reported-by: Ivan Bulatovic <combuster@archlinux.us> Reported-by: Casey Schaufler <casey@schaufler-ca.com> Signed-off-by: Li Zefan <lizefan@huawei.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
f722406faa
commit
d6cbf35dac
|
@ -2699,13 +2699,14 @@ static int cgroup_add_file(struct cgroup *cgrp, struct cgroup_subsys *subsys,
|
|||
goto out;
|
||||
}
|
||||
|
||||
cfe->type = (void *)cft;
|
||||
cfe->dentry = dentry;
|
||||
dentry->d_fsdata = cfe;
|
||||
simple_xattrs_init(&cfe->xattrs);
|
||||
|
||||
mode = cgroup_file_mode(cft);
|
||||
error = cgroup_create_file(dentry, mode | S_IFREG, cgrp->root->sb);
|
||||
if (!error) {
|
||||
cfe->type = (void *)cft;
|
||||
cfe->dentry = dentry;
|
||||
dentry->d_fsdata = cfe;
|
||||
simple_xattrs_init(&cfe->xattrs);
|
||||
list_add_tail(&cfe->node, &parent->files);
|
||||
cfe = NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue