|
@@ -483,6 +483,7 @@ out:
|
|
|
}
|
|
|
|
|
|
struct kmem_cache *ecryptfs_sb_info_cache;
|
|
|
+static struct file_system_type ecryptfs_fs_type;
|
|
|
|
|
|
/**
|
|
|
* ecryptfs_read_super
|
|
@@ -503,6 +504,13 @@ static int ecryptfs_read_super(struct super_block *sb, const char *dev_name)
|
|
|
ecryptfs_printk(KERN_WARNING, "path_lookup() failed\n");
|
|
|
goto out;
|
|
|
}
|
|
|
+ if (path.dentry->d_sb->s_type == &ecryptfs_fs_type) {
|
|
|
+ rc = -EINVAL;
|
|
|
+ printk(KERN_ERR "Mount on filesystem of type "
|
|
|
+ "eCryptfs explicitly disallowed due to "
|
|
|
+ "known incompatibilities\n");
|
|
|
+ goto out_free;
|
|
|
+ }
|
|
|
ecryptfs_set_superblock_lower(sb, path.dentry->d_sb);
|
|
|
sb->s_maxbytes = path.dentry->d_sb->s_maxbytes;
|
|
|
sb->s_blocksize = path.dentry->d_sb->s_blocksize;
|