summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2014-10-04 14:44:03 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-01-08 10:00:49 -0800
commit5f20adeafce6d4a6d8dd132acddfb4edf57f08de (patch)
tree425af809cf6390e0edfb16903e3db1faf9a7df1d
parentebdd0940bb83aa0bf16acbbf3ea7b89d325880cc (diff)
downloadlinux-stable-5f20adeafce6d4a6d8dd132acddfb4edf57f08de.tar.gz
linux-stable-5f20adeafce6d4a6d8dd132acddfb4edf57f08de.tar.bz2
linux-stable-5f20adeafce6d4a6d8dd132acddfb4edf57f08de.zip
umount: Disallow unprivileged mount force
commit b2f5d4dc38e034eecb7987e513255265ff9aa1cf upstream. Forced unmount affects not just the mount namespace but the underlying superblock as well. Restrict forced unmount to the global root user for now. Otherwise it becomes possible a user in a less privileged mount namespace to force the shutdown of a superblock of a filesystem in a more privileged mount namespace, allowing a DOS attack on root. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--fs/namespace.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/namespace.c b/fs/namespace.c
index dc6914730579..039f3802d70e 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -1441,6 +1441,9 @@ SYSCALL_DEFINE2(umount, char __user *, name, int, flags)
goto dput_and_out;
if (mnt->mnt.mnt_flags & MNT_LOCKED)
goto dput_and_out;
+ retval = -EPERM;
+ if (flags & MNT_FORCE && !capable(CAP_SYS_ADMIN))
+ goto dput_and_out;
retval = do_umount(mnt, flags);
dput_and_out: