proc: prevent stacking filesystems on top
authorJann Horn <jannh@google.com>
Wed, 1 Jun 2016 09:55:05 +0000 (11:55 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 10 Jun 2016 19:09:43 +0000 (12:09 -0700)
This prevents stacking filesystems (ecryptfs and overlayfs) from using
procfs as lower filesystem.  There is too much magic going on inside
procfs, and there is no good reason to stack stuff on top of procfs.

(For example, procfs does access checks in VFS open handlers, and
ecryptfs by design calls open handlers from a kernel thread that doesn't
drop privileges or so.)

Signed-off-by: Jann Horn <jannh@google.com>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/proc/root.c

index 361ab4ee42fc3632232f4bc6eaef54a12f6b47e6..ec649c92d2708831b5e2b19615ee276113a1dabe 100644 (file)
@@ -121,6 +121,13 @@ static struct dentry *proc_mount(struct file_system_type *fs_type,
        if (IS_ERR(sb))
                return ERR_CAST(sb);
 
+       /*
+        * procfs isn't actually a stacking filesystem; however, there is
+        * too much magic going on inside it to permit stacking things on
+        * top of it
+        */
+       sb->s_stack_depth = FILESYSTEM_MAX_STACK_DEPTH;
+
        if (!proc_parse_options(options, ns)) {
                deactivate_locked_super(sb);
                return ERR_PTR(-EINVAL);