From 8cd49d7762117a5f87ad8b309293969285e30182 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Mon, 17 May 2010 00:59:46 -0400 Subject: [PATCH] Ban ecryptfs over ecryptfs This is a seriously simplified patch from Eric Sandeen; copy of rationale follows: === mounting stacked ecryptfs on ecryptfs has been shown to lead to bugs in testing. For crypto info in xattr, there is no mechanism for handling this at all, and for normal file headers, we run into other trouble: BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 IP: [] ecryptfs_d_revalidate+0x43/0xa0 [ecryptfs] ... There doesn't seem to be any good usecase for this, so I'd suggest just disallowing the configuration. Based on a patch originally, I believe, from Mike Halcrow. === Signed-off-by: Al Viro --- fs/ecryptfs/main.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c index 7d3ed6bfcfa55..cbd4e18adb204 100644 --- a/fs/ecryptfs/main.c +++ b/fs/ecryptfs/main.c @@ -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; -- 2.39.5