diff options
author | Andy Lutomirski <luto@amacapital.net> | 2014-10-08 15:32:47 -0400 |
---|---|---|
committer | Andy Lutomirski <luto@amacapital.net> | 2014-10-08 15:32:47 -0400 |
commit | a1480dcc3c706e309a88884723446f2e84fedd5b (patch) | |
tree | fa2a425b8607586c11127ea35344d893e6a4a4f0 /fs/namespace.c | |
parent | bfe01a5ba2490f299e1d2d5508cbbbadd897bbe9 (diff) |
fs: Add a missing permission check to do_umount
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>
Diffstat (limited to 'fs/namespace.c')
-rw-r--r-- | fs/namespace.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index ef42d9bee212..7f67b463a5b4 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
@@ -1356,6 +1356,8 @@ static int do_umount(struct mount *mnt, int flags) | |||
1356 | * Special case for "unmounting" root ... | 1356 | * Special case for "unmounting" root ... |
1357 | * we just try to remount it readonly. | 1357 | * we just try to remount it readonly. |
1358 | */ | 1358 | */ |
1359 | if (!capable(CAP_SYS_ADMIN)) | ||
1360 | return -EPERM; | ||
1359 | down_write(&sb->s_umount); | 1361 | down_write(&sb->s_umount); |
1360 | if (!(sb->s_flags & MS_RDONLY)) | 1362 | if (!(sb->s_flags & MS_RDONLY)) |
1361 | retval = do_remount_sb(sb, MS_RDONLY, NULL, 0); | 1363 | retval = do_remount_sb(sb, MS_RDONLY, NULL, 0); |