From: Andy Lutomirski <luto@amacapital.net> Date: Wed, 8 Oct 2014 19:32:47 +0000 (-0700) Subject: fs: Add a missing permission check to do_umount X-Git-Tag: firefly_0821_release~3679^2~1368 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a7dbb3e347aa3916f681b10cfbc7d12ed6ae7b34;p=firefly-linux-kernel-4.4.55.git fs: Add a missing permission check to do_umount commit a1480dcc3c706e309a88884723446f2e84fedd5b upstream. Accessing do_remount_sb should require global CAP_SYS_ADMIN, but only one of the two call sites was appropriately protected. Fixes CVE-2014-7975. Signed-off-by: Andy Lutomirski <luto@amacapital.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- diff --git a/fs/namespace.c b/fs/namespace.c index 00409add4d96..7f6a9348c589 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -1274,6 +1274,8 @@ static int do_umount(struct mount *mnt, int flags) * Special case for "unmounting" root ... * we just try to remount it readonly. */ + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; down_write(&sb->s_umount); if (!(sb->s_flags & MS_RDONLY)) retval = do_remount_sb(sb, MS_RDONLY, NULL, 0);