|
@@ -505,7 +505,6 @@ static struct dentry *ecryptfs_mount(struct file_system_type *fs_type, int flags
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- s->s_flags = flags;
|
|
|
rc = bdi_setup_and_register(&sbi->bdi, "ecryptfs", BDI_CAP_MAP_COPY);
|
|
|
if (rc)
|
|
|
goto out1;
|
|
@@ -541,6 +540,15 @@ static struct dentry *ecryptfs_mount(struct file_system_type *fs_type, int flags
|
|
|
}
|
|
|
|
|
|
ecryptfs_set_superblock_lower(s, path.dentry->d_sb);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Set the POSIX ACL flag based on whether they're enabled in the lower
|
|
|
+ * mount. Force a read-only eCryptfs mount if the lower mount is ro.
|
|
|
+ * Allow a ro eCryptfs mount even when the lower mount is rw.
|
|
|
+ */
|
|
|
+ s->s_flags = flags & ~MS_POSIXACL;
|
|
|
+ s->s_flags |= path.dentry->d_sb->s_flags & (MS_RDONLY | MS_POSIXACL);
|
|
|
+
|
|
|
s->s_maxbytes = path.dentry->d_sb->s_maxbytes;
|
|
|
s->s_blocksize = path.dentry->d_sb->s_blocksize;
|
|
|
s->s_magic = ECRYPTFS_SUPER_MAGIC;
|