summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJann Horn <jannh@google.com>2016-06-01 11:55:05 +0200
committerBen Hutchings <ben@decadent.org.uk>2016-08-22 22:37:18 +0100
commitcf3069a14a9cccdd89d2b482f9eee5e37ebe25a6 (patch)
tree2e7ffe7b25bc4f4b5533dadbe28c07ccecb1947a
parent9d6c5babc04522ff85b550f14563970279ab8f90 (diff)
downloadlinux-stable-cf3069a14a9cccdd89d2b482f9eee5e37ebe25a6.tar.gz
linux-stable-cf3069a14a9cccdd89d2b482f9eee5e37ebe25a6.tar.bz2
linux-stable-cf3069a14a9cccdd89d2b482f9eee5e37ebe25a6.zip
proc: prevent stacking filesystems on top
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>
-rw-r--r--fs/proc/root.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/proc/root.c b/fs/proc/root.c
index 03102d978180..c2f39abdbb7a 100644
--- a/fs/proc/root.c
+++ b/fs/proc/root.c
@@ -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);