]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
proc: prevent stacking filesystems on top
authorJann Horn <jannh@google.com>
Wed, 1 Jun 2016 09:55:05 +0000 (11:55 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Mon, 22 Aug 2016 21:37:18 +0000 (22:37 +0100)
commit e54ad7f1ee263ffa5a2de9c609d58dfa27b21cd9 upstream.

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>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
fs/proc/root.c

index 03102d978180eba68469ef01d13ad25465f5b796..c2f39abdbb7a1f2f2a643a99855aeca9a5d3d956 100644 (file)
@@ -53,6 +53,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 (!sb->s_root) {
                sb->s_flags = flags;
                err = proc_fill_super(sb);