diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2010-07-04 12:23:11 +0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-08-09 16:47:28 -0400 |
commit | 256249584bda1a9357e2d29987a37f5b2df035f6 (patch) | |
tree | 266fa8425efb96dcb484e7fceb3a2d68610a1ba1 /fs/logfs | |
parent | 0e4f6a791b1e8cfde75a74e2f885642ecb3fe9d8 (diff) | |
download | linux-stable-256249584bda1a9357e2d29987a37f5b2df035f6.tar.gz linux-stable-256249584bda1a9357e2d29987a37f5b2df035f6.tar.bz2 linux-stable-256249584bda1a9357e2d29987a37f5b2df035f6.zip |
fix leak in __logfs_create()
if kmalloc fails, we still need to drop the inode, as we do
on other failure exits.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/logfs')
-rw-r--r-- | fs/logfs/dir.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/logfs/dir.c b/fs/logfs/dir.c index 72d1893ddd36..675cc49197fe 100644 --- a/fs/logfs/dir.c +++ b/fs/logfs/dir.c @@ -434,8 +434,11 @@ static int __logfs_create(struct inode *dir, struct dentry *dentry, int ret; ta = kzalloc(sizeof(*ta), GFP_KERNEL); - if (!ta) + if (!ta) { + inode->i_nlink--; + iput(inode); return -ENOMEM; + } ta->state = CREATE_1; ta->ino = inode->i_ino; |