From: James Morris Date: Mon, 10 Aug 2009 12:00:13 +0000 (+1000) Subject: SELinux: fix memory leakage in /security/selinux/hooks.c X-Git-Url: http://git.mmlx.us/?a=commitdiff_plain;h=314dabb83a547ec4da819e8cbc78fac9cec605cd;p=linux-edison.git SELinux: fix memory leakage in /security/selinux/hooks.c Fix memory leakage in /security/selinux/hooks.c The buffer always needs to be freed here; we either error out or allocate more memory. Reported-by: iceberg Signed-off-by: James Morris Acked-by: Stephen Smalley --- diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 15c2a08a66f..1e8cfc4c2ed 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -1285,6 +1285,8 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent rc = inode->i_op->getxattr(dentry, XATTR_NAME_SELINUX, context, len); if (rc == -ERANGE) { + kfree(context); + /* Need a larger buffer. Query for the right size. */ rc = inode->i_op->getxattr(dentry, XATTR_NAME_SELINUX, NULL, 0); @@ -1292,7 +1294,6 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent dput(dentry); goto out_unlock; } - kfree(context); len = rc; context = kmalloc(len+1, GFP_NOFS); if (!context) {