summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJann Horn <jannh@google.com>2016-06-01 11:55:05 +0200
committerMin Chong <mchong@google.com>2016-07-25 13:03:32 -0700
commit53c39433d5fd7d71bec7e904a6fa6691a9e90fdc (patch)
tree86fe35992b72ffc82ced76a7cc6d676e58d6867e
parentf394c99b6ac0236d7e06ee406107294d5f389259 (diff)
UPSTREAM: proc: prevent stacking filesystems on top
(cherry picked from commit e54ad7f1ee263ffa5a2de9c609d58dfa27b21cd9) 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> Change-Id: Ib050ef9dc10e623589d22e3a9e6aee9ee4f0cd5d Bug: 29444228
-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 361ab4ee42fc..ec649c92d270 100644
--- a/fs/proc/root.c
+++ b/fs/proc/root.c
@@ -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);