Re: [PATCH v4 bpf-next 0/3] veristat: add better support of freplace programs

Stanislav Fomichev
2023-03-28T17:25:26Z

On 03/27, Andrii Nakryiko wrote:
> Teach veristat how to deal with freplace BPF programs. As they can't be
> directly loaded by veristat without custom user-space part that sets
> correct
> target program FD, veristat always fails freplace programs. This patch set
> teaches veristat to guess target program type that will be inherited by
> freplace program itself, and subtitute it for BPF_PROG_TYPE_EXT
> (freplace) one
> for the purposes of BPF verification.

Acked-by: Stanislav Fomichev <sdf@google.com>

> Patch #1 fixes bug in libbpf preventing overriding freplace with specific
> program type.

> Patch #2 adds convenient -d flag to request veristat to emit libbpf debug
> logs. It help debugging why a specific BPF program fails to load, if the
> problem is not due to BPF verification itself.

> v3->v4:
> - fix optional kern_name check when guessing prog type (Alexei);
> v2->v3:
> - fix bpf_obj_id selftest that uses legacy bpf_prog_test_load() helper,
> which always sets program type programmatically; teach the helper to
> do it
> only if actually necessary (Stanislav);
> v1->v2:
> - fix compilation error reported by old GCC (my GCC v11 doesn't produce
> even
> a warning) and Clang (see CI failure at [0]):

> GCC version:

> veristat.c: In function ‘fixup_obj’:
> veristat.c:908:1: error: label at end of compound statement
> 908 | skip_freplace_fixup:
> | ^~~~~~~~~~~~~~~~~~~

> Clang version:

> veristat.c:909:1: error: label at end of compound statement is a C2x
> extension [-Werror,-Wc2x-extensions]
> }
> ^
> 1 error generated.

> [0]
> https://github.com/kernel-patches/bpf/actions/runs/4515972059/jobs/7953845335

> Andrii Nakryiko (3):
> libbpf: disassociate section handler on explicit
> bpf_program__set_type() call
> veristat: add -d debug mode option to see debug libbpf log
> veristat: guess and substitue underlying program type for freplace
> (EXT) progs

> tools/lib/bpf/libbpf.c | 1 +
> tools/testing/selftests/bpf/testing_helpers.c | 2 +-
> tools/testing/selftests/bpf/veristat.c | 129 +++++++++++++++++-
> 3 files changed, 126 insertions(+), 6 deletions(-)

> --
> 2.34.1