Patchwork UBIFS: fix error return code in ubifs_remount_rw() and ubifs_fill_super()

login
register
mail settings
Submitter Wei Yongjun
Date June 7, 2013, 2:17 a.m.
Message ID <CAPgLHd_=Y=YwCWSFjcacJ14yKUidmmJTHnKKibU6haoBUeNacA@mail.gmail.com>
Download mbox | patch
Permalink /patch/249579/
State New
Headers show

Comments

Wei Yongjun - June 7, 2013, 2:17 a.m.
From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>

Fix to return -ENOMEM in the kmalloc() and d_make_root() error handling
case instead of 0, as done elsewhere in those functions.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
---
 fs/ubifs/super.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
Brian Norris - Oct. 2, 2013, 7:59 p.m.
Bump, Artem? I'm cleaning out my old email, and this patch looks
obviously correct.

On Thu, Jun 6, 2013 at 7:17 PM, Wei Yongjun <weiyj.lk@gmail.com> wrote:
> From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
>
> Fix to return -ENOMEM in the kmalloc() and d_make_root() error handling
> case instead of 0, as done elsewhere in those functions.
>
> Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
> ---
>  fs/ubifs/super.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
> index f21acf0..673b4bc 100644
> --- a/fs/ubifs/super.c
> +++ b/fs/ubifs/super.c
> @@ -1629,8 +1629,10 @@ static int ubifs_remount_rw(struct ubifs_info *c)
>         }
>
>         c->write_reserve_buf = kmalloc(COMPRESSED_DATA_NODE_BUF_SZ, GFP_KERNEL);
> -       if (!c->write_reserve_buf)
> +       if (!c->write_reserve_buf) {
> +               err = -ENOMEM;
>                 goto out;
> +       }
>
>         err = ubifs_lpt_init(c, 0, 1);
>         if (err)
> @@ -2063,8 +2065,10 @@ static int ubifs_fill_super(struct super_block *sb, void *data, int silent)
>         }
>
>         sb->s_root = d_make_root(root);
> -       if (!sb->s_root)
> +       if (!sb->s_root) {
> +               err = -ENOMEM;
>                 goto out_umount;
> +       }
>
>         mutex_unlock(&c->umount_mutex);
>         return 0;
>
>
Artem Bityutskiy - Oct. 26, 2013, 10:14 a.m.
On Wed, 2013-10-02 at 12:59 -0700, Brian Norris wrote:
> Bump, Artem? I'm cleaning out my old email, and this patch looks
> obviously correct.

Picked to linux-ubifs.git, thanks!

Patch

diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index f21acf0..673b4bc 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -1629,8 +1629,10 @@  static int ubifs_remount_rw(struct ubifs_info *c)
 	}
 
 	c->write_reserve_buf = kmalloc(COMPRESSED_DATA_NODE_BUF_SZ, GFP_KERNEL);
-	if (!c->write_reserve_buf)
+	if (!c->write_reserve_buf) {
+		err = -ENOMEM;
 		goto out;
+	}
 
 	err = ubifs_lpt_init(c, 0, 1);
 	if (err)
@@ -2063,8 +2065,10 @@  static int ubifs_fill_super(struct super_block *sb, void *data, int silent)
 	}
 
 	sb->s_root = d_make_root(root);
-	if (!sb->s_root)
+	if (!sb->s_root) {
+		err = -ENOMEM;
 		goto out_umount;
+	}
 
 	mutex_unlock(&c->umount_mutex);
 	return 0;