When testing v1 of [1] we noticed that functions with 0-sized structs as parameters were not part of BTF encoding; this was fixed in v2. However we need to make sure we handle such zero-sized structs correctly since they confound the calling convention expectations - no registers are used for the empty struct so this has knock-on effects for subsequent register-parameter matching. Patch 1 updates BPF_PROG2() to handle the zero-sized struct case. Patch 2 makes 0-sized structs a special case, allowing them to exist as parameter representations in BTF without failing verification. Patch 3 is a selftest that ensures the parameters after the 0-sized struct are represented correctly. [1] https://lore.kernel.org/dwarves/20250502070318.1561924-1-tony.ambardar@xxxxxxxxx/ Alan Maguire (3): libbpf: update BPF_PROG2() to handle empty structs bpf: allow 0-sized structs as function parameters selftests/bpf: add 0-length struct testing to tracing_struct tests kernel/bpf/btf.c | 2 +- tools/lib/bpf/bpf_tracing.h | 6 ++++-- .../selftests/bpf/prog_tests/tracing_struct.c | 2 ++ tools/testing/selftests/bpf/progs/tracing_struct.c | 11 +++++++++++ tools/testing/selftests/bpf/test_kmods/bpf_testmod.c | 12 ++++++++++++ 5 files changed, 30 insertions(+), 3 deletions(-) -- 2.39.3