aboutsummaryrefslogtreecommitdiffstats
path: root/fs/namespace.c
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2014-10-04 17:44:03 -0400
committerEric W. Biederman <ebiederm@xmission.com>2014-12-02 11:46:48 -0500
commitb2f5d4dc38e034eecb7987e513255265ff9aa1cf (patch)
tree7a2205fdc3392feb549dfc55ce2c9f567b730936 /fs/namespace.c
parent4a44a19b470a886997d6647a77bb3e38dcbfa8c5 (diff)
umount: Disallow unprivileged mount force
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. Cc: stable@vger.kernel.org Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Diffstat (limited to 'fs/namespace.c')
-rw-r--r--fs/namespace.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/namespace.c b/fs/namespace.c
index 3a1a87dc33df..43b16af8af30 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -1544,6 +1544,9 @@ SYSCALL_DEFINE2(umount, char __user *, name, int, flags)
1544 goto dput_and_out; 1544 goto dput_and_out;
1545 if (mnt->mnt.mnt_flags & MNT_LOCKED) 1545 if (mnt->mnt.mnt_flags & MNT_LOCKED)
1546 goto dput_and_out; 1546 goto dput_and_out;
1547 retval = -EPERM;
1548 if (flags & MNT_FORCE && !capable(CAP_SYS_ADMIN))
1549 goto dput_and_out;
1547 1550
1548 retval = do_umount(mnt, flags); 1551 retval = do_umount(mnt, flags);
1549dput_and_out: 1552dput_and_out: