ovl: fix return value of ovl_fill_super
authorGeliang Tang <geliangtang@gmail.com>
Fri, 18 Nov 2016 15:02:46 +0000 (23:02 +0800)
committerMiklos Szeredi <mszeredi@redhat.com>
Fri, 16 Dec 2016 10:02:57 +0000 (11:02 +0100)
If kcalloc() failed, the return value of ovl_fill_super() is -EINVAL,
not -ENOMEM. So this patch sets this value to -ENOMEM before calling
kcalloc(), and sets it back to -EINVAL after calling kcalloc().

Signed-off-by: Geliang Tang <geliangtang@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/overlayfs/super.c

index 7da36ccda438cd0535113f26a23d5641d56d179f..20f48abbb82fd3972cd58d7eecf09a2b37a70579 100644 (file)
@@ -774,10 +774,12 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
                goto out_free_lowertmp;
        }
 
+       err = -ENOMEM;
        stack = kcalloc(stacklen, sizeof(struct path), GFP_KERNEL);
        if (!stack)
                goto out_free_lowertmp;
 
+       err = -EINVAL;
        lower = lowertmp;
        for (numlower = 0; numlower < stacklen; numlower++) {
                err = ovl_lower_dir(lower, &stack[numlower], ufs,