On 10/11/19 5:40 PM, Alexei Starovoitov wrote: >> But even if kernel supports attach_btf_id, I think users still need to >> opt in into specifying attach_btf_id by libbpf. Think about existing >> raw_tp programs that are using bpf_probe_read() because they were not >> created with this kernel feature in mind. They will suddenly stop >> working without any of user's fault. > > This one is excellent catch. > loop1.c should have caught it, since it has > SEC("raw_tracepoint/kfree_skb") > { > int nested_loops(volatile struct pt_regs* ctx) > .. = PT_REGS_RC(ctx); > > and verifier would have rejected it. > But the way the test is written it's not using libbpf's autodetect > of program type, so everything is passing. With: diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_verif_scale.c b/tools/testing/selftests/bpf/prog_tests/bpf_verif_scale.c index 1c01ee2600a9..e27156dce10d 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_verif_scale.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_verif_scale.c @@ -67,7 +67,7 @@ void test_bpf_verif_scale(void) */ { "pyperf600_nounroll.o", BPF_PROG_TYPE_RAW_TRACEPOINT }, - { "loop1.o", BPF_PROG_TYPE_RAW_TRACEPOINT }, + { "loop1.o", BPF_PROG_TYPE_UNSPEC}, { "loop2.o", BPF_PROG_TYPE_RAW_TRACEPOINT }, libbpf prog auto-detection kicks in and ... # ./test_progs -n 3/10 libbpf: load bpf program failed: Permission denied libbpf: -- BEGIN DUMP LOG --- libbpf: raw_tp 'kfree_skb' doesn't have 10-th argument invalid bpf_context access off=80 size=8 Good :) The verifier is doing its job.