diff options
author | Micah Morton <mortonm@chromium.org> | 2019-01-08 01:10:53 +0100 |
---|---|---|
committer | James Morris <james.morris@microsoft.com> | 2019-01-10 23:16:06 +0100 |
commit | c1a85a00ea66cb6f0bd0f14e47c28c2b0999799f (patch) | |
tree | 310c082e0b41d2d3ff8b619553ed5e45ad244862 /security/security.c | |
parent | Merge tag 'blob-stacking-security-next' of https://git.kernel.org/pub/scm/lin... (diff) | |
download | linux-c1a85a00ea66cb6f0bd0f14e47c28c2b0999799f.tar.xz linux-c1a85a00ea66cb6f0bd0f14e47c28c2b0999799f.zip |
LSM: generalize flag passing to security_capable
This patch provides a general mechanism for passing flags to the
security_capable LSM hook. It replaces the specific 'audit' flag that is
used to tell security_capable whether it should log an audit message for
the given capability check. The reason for generalizing this flag
passing is so we can add an additional flag that signifies whether
security_capable is being called by a setid syscall (which is needed by
the proposed SafeSetID LSM).
Signed-off-by: Micah Morton <mortonm@chromium.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: James Morris <james.morris@microsoft.com>
Diffstat (limited to 'security/security.c')
-rw-r--r-- | security/security.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/security/security.c b/security/security.c index 953fc3ea18a9..a618e22df5c6 100644 --- a/security/security.c +++ b/security/security.c @@ -689,16 +689,12 @@ int security_capset(struct cred *new, const struct cred *old, effective, inheritable, permitted); } -int security_capable(const struct cred *cred, struct user_namespace *ns, - int cap) +int security_capable(const struct cred *cred, + struct user_namespace *ns, + int cap, + unsigned int opts) { - return call_int_hook(capable, 0, cred, ns, cap, SECURITY_CAP_AUDIT); -} - -int security_capable_noaudit(const struct cred *cred, struct user_namespace *ns, - int cap) -{ - return call_int_hook(capable, 0, cred, ns, cap, SECURITY_CAP_NOAUDIT); + return call_int_hook(capable, 0, cred, ns, cap, opts); } int security_quotactl(int cmds, int type, int id, struct super_block *sb) |