diff options
author | Tyler Hicks <tyhicks@canonical.com> | 2016-06-02 23:43:21 -0500 |
---|---|---|
committer | James Morris <james.l.morris@oracle.com> | 2016-06-06 20:16:18 +1000 |
commit | 98f368e9e2630a3ce3e80fb10fb2e02038cf9578 (patch) | |
tree | ae14325043192683972bc25ca35c8b7ceb8b8241 /include/linux/capability.h | |
parent | 2885c1e3e0c29e4a1915214ddc9673925f538299 (diff) | |
download | linux-98f368e9e2630a3ce3e80fb10fb2e02038cf9578.tar.gz linux-98f368e9e2630a3ce3e80fb10fb2e02038cf9578.tar.bz2 linux-98f368e9e2630a3ce3e80fb10fb2e02038cf9578.zip |
kernel: Add noaudit variant of ns_capable()
When checking the current cred for a capability in a specific user
namespace, it isn't always desirable to have the LSMs audit the check.
This patch adds a noaudit variant of ns_capable() for when those
situations arise.
The common logic between ns_capable() and the new ns_capable_noaudit()
is moved into a single, shared function to keep duplicated code to a
minimum and ease maintainability.
Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
Signed-off-by: James Morris <james.l.morris@oracle.com>
Diffstat (limited to 'include/linux/capability.h')
-rw-r--r-- | include/linux/capability.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/capability.h b/include/linux/capability.h index 00690ff92edf..5f3c63dde2d5 100644 --- a/include/linux/capability.h +++ b/include/linux/capability.h @@ -206,6 +206,7 @@ extern bool has_ns_capability_noaudit(struct task_struct *t, struct user_namespace *ns, int cap); extern bool capable(int cap); extern bool ns_capable(struct user_namespace *ns, int cap); +extern bool ns_capable_noaudit(struct user_namespace *ns, int cap); #else static inline bool has_capability(struct task_struct *t, int cap) { @@ -233,6 +234,10 @@ static inline bool ns_capable(struct user_namespace *ns, int cap) { return true; } +static inline bool ns_capable_noaudit(struct user_namespace *ns, int cap) +{ + return true; +} #endif /* CONFIG_MULTIUSER */ extern bool capable_wrt_inode_uidgid(const struct inode *inode, int cap); extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap); |