Patchwork [2/2] ext2: fix error handling in ext2_fill_super()

login
register
mail settings
Submitter Seunghun Lee
Date May 15, 2014, 12:26 p.m.
Message ID <1400156776-3412-2-git-send-email-waydi1@gmail.com>
Download mbox | patch
Permalink /patch/349193/
State Not Applicable
Headers show

Comments

Seunghun Lee - May 15, 2014, 12:26 p.m.
ext2_fill_super is using err variable, but it is not applied to return value.

This patch fixes it.

Signed-off-by: Seunghun Lee <waydi1@gmail.com>
---
 fs/ext2/super.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
Jan Kara - May 15, 2014, 1:42 p.m.
On Thu 15-05-14 21:26:16, Seunghun Lee wrote:
> ext2_fill_super is using err variable, but it is not applied to return value.
> 
> This patch fixes it.
  I see no point why we should have 'err' and 'ret' variables. Just use
'ret' where 'err' is used and be done with it...

								Honza
> 
> Signed-off-by: Seunghun Lee <waydi1@gmail.com>
> ---
>  fs/ext2/super.c |   10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/ext2/super.c b/fs/ext2/super.c
> index e3fc51e..7e36536 100644
> --- a/fs/ext2/super.c
> +++ b/fs/ext2/super.c
> @@ -770,14 +770,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  	unsigned long logic_sb_block;
>  	unsigned long offset = 0;
>  	unsigned long def_mount_opts;
> -	int ret = -EINVAL;
> +	int ret = -ENOMEM;
>  	int blocksize = BLOCK_SIZE;
>  	int db_count;
>  	int i, j;
>  	__le32 features;
> -	int err;
> +	int err = 0;
>  
> -	err = -ENOMEM;
>  	sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
>  	if (!sbi)
>  		goto failed;
> @@ -793,6 +792,9 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
>  
>  	spin_lock_init(&sbi->s_lock);
>  
> +	/* -EINVAL is default */
> +	ret = -EINVAL;
> +
>  	/*
>  	 * See what the current blocksize for the device is, and
>  	 * use that as the blocksize.  Otherwise (or if the blocksize
> @@ -1140,7 +1142,7 @@ failed_sbi:
>  	kfree(sbi->s_blockgroup_lock);
>  	kfree(sbi);
>  failed:
> -	return ret;
> +	return err ? err : ret;
>  }
>  
>  static void ext2_clear_super_error(struct super_block *sb)
> -- 
> 1.7.9.5
>

Patch

diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index e3fc51e..7e36536 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -770,14 +770,13 @@  static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 	unsigned long logic_sb_block;
 	unsigned long offset = 0;
 	unsigned long def_mount_opts;
-	int ret = -EINVAL;
+	int ret = -ENOMEM;
 	int blocksize = BLOCK_SIZE;
 	int db_count;
 	int i, j;
 	__le32 features;
-	int err;
+	int err = 0;
 
-	err = -ENOMEM;
 	sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
 	if (!sbi)
 		goto failed;
@@ -793,6 +792,9 @@  static int ext2_fill_super(struct super_block *sb, void *data, int silent)
 
 	spin_lock_init(&sbi->s_lock);
 
+	/* -EINVAL is default */
+	ret = -EINVAL;
+
 	/*
 	 * See what the current blocksize for the device is, and
 	 * use that as the blocksize.  Otherwise (or if the blocksize
@@ -1140,7 +1142,7 @@  failed_sbi:
 	kfree(sbi->s_blockgroup_lock);
 	kfree(sbi);
 failed:
-	return ret;
+	return err ? err : ret;
 }
 
 static void ext2_clear_super_error(struct super_block *sb)