Commit c2c44ec2 authored by Al Viro's avatar Al Viro

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: default avatarAl Viro <viro@zeniv.linux.org.uk>
Reported-by: default avatarChristian Brauner <christian@brauner.io>
Tested-by: default avatarChristian Brauner <christian@brauner.io>
Reviewed-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 19a1c409
...@@ -478,13 +478,10 @@ EXPORT_SYMBOL(generic_shutdown_super); ...@@ -478,13 +478,10 @@ EXPORT_SYMBOL(generic_shutdown_super);
bool mount_capable(struct fs_context *fc) 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)) if (!(fc->fs_type->fs_flags & FS_USERNS_MOUNT))
return capable(CAP_SYS_ADMIN); return capable(CAP_SYS_ADMIN);
else else
return ns_capable(user_ns, CAP_SYS_ADMIN); return ns_capable(fc->user_ns, CAP_SYS_ADMIN);
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment