1906ee42cSAndrii Nakryiko // SPDX-License-Identifier: GPL-2.0 2906ee42cSAndrii Nakryiko /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */ 3906ee42cSAndrii Nakryiko 4906ee42cSAndrii Nakryiko #include "vmlinux.h" 5906ee42cSAndrii Nakryiko #include <bpf/bpf_helpers.h> 6906ee42cSAndrii Nakryiko #include <bpf/bpf_tracing.h> 7906ee42cSAndrii Nakryiko 8906ee42cSAndrii Nakryiko char _license[] SEC("license") = "GPL"; 9906ee42cSAndrii Nakryiko 10906ee42cSAndrii Nakryiko int my_pid; 11*4dc75564SXu Kuohai int reject_capable; 12*4dc75564SXu Kuohai int reject_cmd; 13906ee42cSAndrii Nakryiko 14906ee42cSAndrii Nakryiko SEC("lsm/bpf_token_capable") BPF_PROG(token_capable,struct bpf_token * token,int cap)15906ee42cSAndrii Nakryikoint BPF_PROG(token_capable, struct bpf_token *token, int cap) 16906ee42cSAndrii Nakryiko { 17906ee42cSAndrii Nakryiko if (my_pid == 0 || my_pid != (bpf_get_current_pid_tgid() >> 32)) 18906ee42cSAndrii Nakryiko return 0; 19906ee42cSAndrii Nakryiko if (reject_capable) 20906ee42cSAndrii Nakryiko return -1; 21906ee42cSAndrii Nakryiko return 0; 22906ee42cSAndrii Nakryiko } 23906ee42cSAndrii Nakryiko 24906ee42cSAndrii Nakryiko SEC("lsm/bpf_token_cmd") BPF_PROG(token_cmd,struct bpf_token * token,enum bpf_cmd cmd)25906ee42cSAndrii Nakryikoint BPF_PROG(token_cmd, struct bpf_token *token, enum bpf_cmd cmd) 26906ee42cSAndrii Nakryiko { 27906ee42cSAndrii Nakryiko if (my_pid == 0 || my_pid != (bpf_get_current_pid_tgid() >> 32)) 28906ee42cSAndrii Nakryiko return 0; 29906ee42cSAndrii Nakryiko if (reject_cmd) 30906ee42cSAndrii Nakryiko return -1; 31906ee42cSAndrii Nakryiko return 0; 32906ee42cSAndrii Nakryiko } 33