libbpf: improve early detection of doomed-to-fail BPF program loading
authorAndrii Nakryiko <andrii@kernel.org>
Tue, 7 May 2024 00:13:33 +0000 (17:13 -0700)
committerMartin KaFai Lau <martin.lau@kernel.org>
Tue, 7 May 2024 23:21:59 +0000 (16:21 -0700)
commitc78420bafe7cf9ce14fa7ceb40ce62e1372e661d
tree5dee2aad44a0fc9a6254ff09125cf5aa4c8a1b39
parent548c2ede0dc81cb8c86f3a72c1c63fe1c179cbfe
libbpf: improve early detection of doomed-to-fail BPF program loading

Extend libbpf's pre-load checks for BPF programs, detecting more typical
conditions that are destinated to cause BPF program failure. This is an
opportunity to provide more helpful and actionable error message to
users, instead of potentially very confusing BPF verifier log and/or
error.

In this case, we detect struct_ops BPF program that was not referenced
anywhere, but still attempted to be loaded (according to libbpf logic).
Suggest that the program might need to be used in some struct_ops
variable. User will get a message of the following kind:

  libbpf: prog 'test_1_forgotten': SEC("struct_ops") program isn't referenced anywhere, did you forget to use it?

Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20240507001335.1445325-6-andrii@kernel.org
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
tools/lib/bpf/libbpf.c