diff options
Diffstat (limited to 'security/security.c')
| -rw-r--r-- | security/security.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/security/security.c b/security/security.c index 6cced62a81b6..65748c3b37ef 100644 --- a/security/security.c +++ b/security/security.c @@ -11,6 +11,7 @@ * (at your option) any later version. */ +#include <linux/bpf.h> #include <linux/capability.h> #include <linux/dcache.h> #include <linux/module.h> @@ -1554,6 +1555,37 @@ int security_audit_rule_match(u32 secid, u32 field, u32 op, void *lsmrule, } #endif /* CONFIG_AUDIT */ +#ifdef CONFIG_BPF_SYSCALL +int security_bpf(int cmd, union bpf_attr *attr, unsigned int size) +{ + return call_int_hook(bpf, 0, cmd, attr, size); +} +int security_bpf_map(struct bpf_map *map, fmode_t fmode) +{ + return call_int_hook(bpf_map, 0, map, fmode); +} +int security_bpf_prog(struct bpf_prog *prog) +{ + return call_int_hook(bpf_prog, 0, prog); +} +int security_bpf_map_alloc(struct bpf_map *map) +{ + return call_int_hook(bpf_map_alloc_security, 0, map); +} +int security_bpf_prog_alloc(struct bpf_prog_aux *aux) +{ + return call_int_hook(bpf_prog_alloc_security, 0, aux); +} +void security_bpf_map_free(struct bpf_map *map) +{ + call_void_hook(bpf_map_free_security, map); +} +void security_bpf_prog_free(struct bpf_prog_aux *aux) +{ + call_void_hook(bpf_prog_free_security, aux); +} +#endif /* CONFIG_BPF_SYSCALL */ + struct security_hook_heads security_hook_heads = { .binder_set_context_mgr = LIST_HEAD_INIT(security_hook_heads.binder_set_context_mgr), @@ -1900,4 +1932,20 @@ struct security_hook_heads security_hook_heads = { .audit_rule_free = LIST_HEAD_INIT(security_hook_heads.audit_rule_free), #endif /* CONFIG_AUDIT */ +#ifdef CONFIG_BPF_SYSCALL + .bpf = + LIST_HEAD_INIT(security_hook_heads.bpf), + .bpf_map = + LIST_HEAD_INIT(security_hook_heads.bpf_map), + .bpf_prog = + LIST_HEAD_INIT(security_hook_heads.bpf_prog), + .bpf_map_alloc_security = + LIST_HEAD_INIT(security_hook_heads.bpf_map_alloc_security), + .bpf_map_free_security = + LIST_HEAD_INIT(security_hook_heads.bpf_map_free_security), + .bpf_prog_alloc_security = + LIST_HEAD_INIT(security_hook_heads.bpf_prog_alloc_security), + .bpf_prog_free_security = + LIST_HEAD_INIT(security_hook_heads.bpf_prog_free_security), +#endif /* CONFIG_BPF_SYSCALL */ }; |
