ovl: Put upperdentry if ovl_check_origin() fails
authorVivek Goyal <vgoyal@redhat.com>
Wed, 1 Nov 2017 19:37:22 +0000 (15:37 -0400)
committerMiklos Szeredi <mszeredi@redhat.com>
Fri, 10 Nov 2017 08:39:16 +0000 (09:39 +0100)
If ovl_check_origin() fails, we should put upperdentry. We have a reference
on it by now. So goto out_put_upper instead of out.

Fixes: a9d019573e88 ("ovl: lookup non-dir copy-up-origin by file handle")
Cc: <stable@vger.kernel.org> #4.12
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/overlayfs/namei.c

index 6cc3ece..7d40991 100644 (file)
@@ -641,7 +641,7 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
                        err = ovl_check_origin(upperdentry, roe->lowerstack,
                                               roe->numlower, &stack, &ctr);
                        if (err)
-                               goto out;
+                               goto out_put_upper;
                }
 
                if (d.redirect) {