summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorUdip Pant <udippant@fb.com>2020-08-25 16:20:00 -0700
committerAlexei Starovoitov <ast@kernel.org>2020-08-26 12:47:56 -0700
commit7e40781cc8b767dd6530910ae12d75978d7d68e1 (patch)
tree6317f0b454db58419bd7a7205a853853493c4b83 /tools
parent7100ff7c62682c2332300ffde8706578e1098e13 (diff)
downloadlinux-7e40781cc8b767dd6530910ae12d75978d7d68e1.tar.bz2
bpf: verifier: Use target program's type for access verifications
This patch adds changes in verifier to make decisions such as granting of read / write access or enforcement of return code status based on the program type of the target program while using dynamic program extension (of type BPF_PROG_TYPE_EXT). The BPF_PROG_TYPE_EXT type can be used to extend types such as XDP, SKB and others. Since the BPF_PROG_TYPE_EXT program type on itself is just a placeholder for those, we need this extended check for those extended programs to actually work with proper access, while using this option. Specifically, it introduces following changes: - may_access_direct_pkt_data: allow access to packet data based on the target prog - check_return_code: enforce return code based on the target prog (currently, this check is skipped for EXT program) - check_ld_abs: check for 'may_access_skb' based on the target prog - check_map_prog_compatibility: enforce the map compatibility check based on the target prog - may_update_sockmap: allow sockmap update based on the target prog Some other occurrences of prog->type is left as it without replacing with the 'resolved' type: - do_check_common() and check_attach_btf_id(): already have specific logic to handle the EXT prog type - jit_subprogs() and bpf_check(): Not changed for jit compilation or while inferring env->ops Next few patches in this series include selftests for some of these cases. Signed-off-by: Udip Pant <udippant@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200825232003.2877030-2-udippant@fb.com
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions