Re: [PATCH bpf-next v5 0/3] libbpf: use func name when pinning programs with LIBBPF_STRICT_SEC_NAME
From: Andrii Nakryiko <hidden>
Date: 2021-10-22 23:57:30
Also in:
bpf
On Thu, Oct 21, 2021 at 2:48 PM Stanislav Fomichev [off-list ref] wrote:
Commit 15669e1dcd75 ("selftests/bpf: Normalize all the rest SEC() uses")
broke flow dissector tests. With the strict section names, bpftool isn't
able to pin all programs of the objects (all section names are the
same now). To bring it back to life let's do the following:
- teach libbpf to pin by func name with LIBBPF_STRICT_SEC_NAME
- enable strict mode in bpftool (breaking cli change)
- fix custom flow_dissector loader to use strict mode
- fix flow_dissector tests to use new pin names (func vs sec)
v5:
- get rid of error when retrying with '/' (Quentin Monnet)
v4:
- fix comment spelling (Quentin Monnet)
- retry progtype without / (Quentin Monnet)
v3:
- clarify program pinning in LIBBPF_STRICT_SEC_NAME,
for real this time (Andrii Nakryiko)
- fix possible segfault in __bpf_program__pin_name (Andrii Nakryiko)
v2:
- add github issue (Andrii Nakryiko)
- remove sec_name from bpf_program.pin_name comment (Andrii Nakryiko)
- add cover letter (Andrii Nakryiko)
Stanislav Fomichev (3):
libbpf: use func name when pinning programs with
LIBBPF_STRICT_SEC_NAME
bpftool: conditionally append / to the progtype
selftests/bpf: fix flow dissector testsI've applied patches #1 and #3, as they have to happen regardless of how bpftool incompatibility is going to be handled. Please see comments from John about bpftool. I think we should try to preserve bpftool's backwards compatibility, or at the very least give users some way to fall back to non-strict mode during the transition period. I trust you, John and Quentin will figure out the best way forward there. Also, please move this flow_dissector_load selftest into test_progs, so that we exercise it regularly.
tools/bpf/bpftool/main.c | 4 +++ tools/bpf/bpftool/prog.c | 35 ++++++++++--------- tools/lib/bpf/libbpf.c | 13 +++++-- tools/lib/bpf/libbpf_legacy.h | 3 ++ .../selftests/bpf/flow_dissector_load.c | 18 ++++++---- .../selftests/bpf/flow_dissector_load.h | 10 ++---- .../selftests/bpf/test_flow_dissector.sh | 10 +++--- 7 files changed, 55 insertions(+), 38 deletions(-) -- 2.33.0.1079.g6e70778dc9-goog