cgroup: initialize xattr before calling d_instantiate()
PATCH 1/1 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.
--- kernel/cgroup.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
kernel/cgroup.c +5 -4
@@ -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 ; }
Signature · 1 line
1.8.0.2
Quoted 8 lines · Li Zefan
cgroup_create_file()callsd_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 callingcgroup_create_file(), which finally leads to dereferencing NULLdentry->d_fsdata.
Quoted 6 lines
This bug has been there since cgroup xattr was introduced.
Cc <[email protected]> # 3.8.xReported-by Casey Schaufler <[email protected]>Signed-off-by Li Zefan <[email protected]>
Applied to cgroup/for-3.10-fixes.
Thanks.
Signature · 1 line
tejun