Skip to content

Commit

Permalink
JFS: Free sbi memory in error path
Browse files Browse the repository at this point in the history
I spotted the missing kfree() while removing the BKL.

[akpm@linux-foundation.org: avoid multiple returns so it doesn't happen again]
Signed-off-by: Jan Blunck <jblunck@suse.de>
Cc: Dave Kleikamp <shaggy@austin.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Jan Blunck authored and Al Viro committed May 15, 2010
1 parent 404e781 commit 684bdc7
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions fs/jfs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -446,10 +446,8 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
/* initialize the mount flag and determine the default error handler */
flag = JFS_ERR_REMOUNT_RO;

if (!parse_options((char *) data, sb, &newLVSize, &flag)) {
kfree(sbi);
return -EINVAL;
}
if (!parse_options((char *) data, sb, &newLVSize, &flag))
goto out_kfree;
sbi->flag = flag;

#ifdef CONFIG_JFS_POSIX_ACL
Expand All @@ -458,7 +456,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)

if (newLVSize) {
printk(KERN_ERR "resize option for remount only\n");
return -EINVAL;
goto out_kfree;
}

/*
Expand All @@ -478,7 +476,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
inode = new_inode(sb);
if (inode == NULL) {
ret = -ENOMEM;
goto out_kfree;
goto out_unload;
}
inode->i_ino = 0;
inode->i_nlink = 1;
Expand Down Expand Up @@ -550,9 +548,10 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
make_bad_inode(sbi->direct_inode);
iput(sbi->direct_inode);
sbi->direct_inode = NULL;
out_kfree:
out_unload:
if (sbi->nls_tab)
unload_nls(sbi->nls_tab);
out_kfree:
kfree(sbi);
return ret;
}
Expand Down

0 comments on commit 684bdc7

Please sign in to comment.