OSDN Git Service

bpf: Tighten ptr_to_btf_id checks.
authorAlexei Starovoitov <ast@kernel.org>
Fri, 25 Nov 2022 22:06:17 +0000 (14:06 -0800)
committerAndrii Nakryiko <andrii@kernel.org>
Wed, 30 Nov 2022 23:33:48 +0000 (15:33 -0800)
commitc67cae551f0df80421b5703ee56ff5e2fe9c4de6
treecc1878eacd432087d36231fd8669971a5e963c70
parent996c060e2bb90e5caef42849846b56da21ea88d9
bpf: Tighten ptr_to_btf_id checks.

The networking programs typically don't require CAP_PERFMON, but through kfuncs
like bpf_cast_to_kern_ctx() they can access memory through PTR_TO_BTF_ID. In
such case enforce CAP_PERFMON.
Also make sure that only GPL programs can access kernel data structures.
All kfuncs require GPL already.

Also remove allow_ptr_to_map_access. It's the same as allow_ptr_leaks and
different name for the same check only causes confusion.

Fixes: fd264ca02094 ("bpf: Add a kfunc to type cast from bpf uapi ctx to kernel ctx")
Fixes: 50c6b8a9aea2 ("selftests/bpf: Add a test for btf_type_tag "percpu"")
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20221125220617.26846-1-alexei.starovoitov@gmail.com
include/linux/bpf.h
include/linux/bpf_verifier.h
kernel/bpf/verifier.c
tools/testing/selftests/bpf/progs/btf_type_tag_percpu.c
tools/testing/selftests/bpf/verifier/map_ptr.c