]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
ovl: encode lower file handles
authorAmir Goldstein <amir73il@gmail.com>
Thu, 28 Dec 2017 17:35:21 +0000 (19:35 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Wed, 24 Jan 2018 10:26:02 +0000 (11:26 +0100)
For indexed or lower non-dir, encode a non-connectable lower file handle
from origin inode. For indexed or lower dir, when ofs->numlower == 1,
encode a lower file handle from lower dir.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/overlayfs/export.c

index 9da498ea75db4403d65c1d57fe8d970d18983ee1..8e37a07b9eff5cc74bc7aa6b6462bcac52170dc0 100644 (file)
@@ -90,7 +90,6 @@ static int ovl_encode_maybe_copy_up(struct dentry *dentry)
 
 static int ovl_d_to_fh(struct dentry *dentry, char *buf, int buflen)
 {
-       struct dentry *upper;
        struct dentry *origin = ovl_dentry_lower(dentry);
        struct ovl_fh *fh = NULL;
        int err;
@@ -107,13 +106,8 @@ static int ovl_d_to_fh(struct dentry *dentry, char *buf, int buflen)
                origin = NULL;
        }
 
-       upper = ovl_dentry_upper(dentry);
-       err = -EACCES;
-       if (!upper || origin)
-               goto fail;
-
-       /* TODO: encode non pure-upper by origin */
-       fh = ovl_encode_fh(upper, true);
+       /* Encode an upper or origin file handle */
+       fh = ovl_encode_fh(origin ?: ovl_dentry_upper(dentry), !origin);
 
        err = -EOVERFLOW;
        if (fh->len > buflen)