Commit 4403158ba295c8e36f6736b1bb12d0f7e1923dac

Authored by Al Viro
1 parent ab9a79b966

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: [<ffffffffa015b0b3>] 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 <viro@zeniv.linux.org.uk>

Showing 1 changed file with 8 additions and 0 deletions Side-by-side Diff

... ... @@ -483,6 +483,7 @@
483 483 }
484 484  
485 485 struct kmem_cache *ecryptfs_sb_info_cache;
  486 +static struct file_system_type ecryptfs_fs_type;
486 487  
487 488 /**
488 489 * ecryptfs_read_super
... ... @@ -502,6 +503,13 @@
502 503 if (rc) {
503 504 ecryptfs_printk(KERN_WARNING, "path_lookup() failed\n");
504 505 goto out;
  506 + }
  507 + if (path.dentry->d_sb->s_type == &ecryptfs_fs_type) {
  508 + rc = -EINVAL;
  509 + printk(KERN_ERR "Mount on filesystem of type "
  510 + "eCryptfs explicitly disallowed due to "
  511 + "known incompatibilities\n");
  512 + goto out_free;
505 513 }
506 514 ecryptfs_set_superblock_lower(sb, path.dentry->d_sb);
507 515 sb->s_maxbytes = path.dentry->d_sb->s_maxbytes;