aboutsummaryrefslogtreecommitdiffstats
path: root/fs/overlayfs/super.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/overlayfs/super.c')
-rw-r--r--fs/overlayfs/super.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index 9828b7de8999..4882ffb37bae 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -891,6 +891,19 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
891 dput(temp); 891 dput(temp);
892 else 892 else
893 pr_warn("overlayfs: upper fs does not support tmpfile.\n"); 893 pr_warn("overlayfs: upper fs does not support tmpfile.\n");
894
895 /*
896 * Check if upper/work fs supports trusted.overlay.*
897 * xattr
898 */
899 err = ovl_do_setxattr(ufs->workdir, OVL_XATTR_OPAQUE,
900 "0", 1, 0);
901 if (err) {
902 ufs->noxattr = true;
903 pr_warn("overlayfs: upper fs does not support xattr.\n");
904 } else {
905 vfs_removexattr(ufs->workdir, OVL_XATTR_OPAQUE);
906 }
894 } 907 }
895 } 908 }
896 909
@@ -961,7 +974,10 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
961 path_put(&workpath); 974 path_put(&workpath);
962 kfree(lowertmp); 975 kfree(lowertmp);
963 976
964 oe->__upperdentry = upperpath.dentry; 977 if (upperpath.dentry) {
978 oe->__upperdentry = upperpath.dentry;
979 oe->impure = ovl_is_impuredir(upperpath.dentry);
980 }
965 for (i = 0; i < numlower; i++) { 981 for (i = 0; i < numlower; i++) {
966 oe->lowerstack[i].dentry = stack[i].dentry; 982 oe->lowerstack[i].dentry = stack[i].dentry;
967 oe->lowerstack[i].mnt = ufs->lower_mnt[i]; 983 oe->lowerstack[i].mnt = ufs->lower_mnt[i];