diff options
Diffstat (limited to 'fs/jfs/super.c')
| -rw-r--r-- | fs/jfs/super.c | 13 | 
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/jfs/super.c b/fs/jfs/super.c index 157382fa625..b66832ac33a 100644 --- a/fs/jfs/super.c +++ b/fs/jfs/super.c @@ -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 @@ out_mount_failed:  	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;  }  |