diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2019-07-27 15:29:57 +0300 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2019-07-31 19:22:32 +0300 |
commit | c2c44ec20a8496f7a3b3401c092afe96908eced1 (patch) | |
tree | e5e8123b0cca114947fbb8a453e49a26fccdea40 /fs/super.c | |
parent | 19a1c4092e7ca1ad1a72ac5535f902c483372cd5 (diff) | |
download | linux-c2c44ec20a8496f7a3b3401c092afe96908eced1.tar.xz |
Unbreak mount_capable()
In "consolidate the capability checks in sget_{fc,userns}())" the
wrong argument had been passed to mount_capable() by sget_fc().
That mistake had been further obscured later, when switching
mount_capable() to fs_context has moved the calculation of
bogus argument from sget_fc() to mount_capable() itself. It
should've been fc->user_ns all along.
Screwed-up-by: Al Viro <viro@zeniv.linux.org.uk>
Reported-by: Christian Brauner <christian@brauner.io>
Tested-by: Christian Brauner <christian@brauner.io>
Reviewed-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/super.c')
-rw-r--r-- | fs/super.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/fs/super.c b/fs/super.c index 113c58f19425..5960578a4076 100644 --- a/fs/super.c +++ b/fs/super.c @@ -478,13 +478,10 @@ EXPORT_SYMBOL(generic_shutdown_super); bool mount_capable(struct fs_context *fc) { - struct user_namespace *user_ns = fc->global ? &init_user_ns - : fc->user_ns; - if (!(fc->fs_type->fs_flags & FS_USERNS_MOUNT)) return capable(CAP_SYS_ADMIN); else - return ns_capable(user_ns, CAP_SYS_ADMIN); + return ns_capable(fc->user_ns, CAP_SYS_ADMIN); } /** |