mirror of https://gitee.com/openkylin/linux.git
JFS: Free sbi memory in error path
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>
This commit is contained in:
parent
404e781249
commit
684bdc7ff9
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue