On Mon, Mar 4, 2024 at 2:52 PM Eduard Zingerman <eddyz87@xxxxxxxxx> wrote: > > Enforce the following existing limitation on struct_ops programs based > on kernel BTF id instead of program-local BTF id: > > struct_ops BPF prog can be re-used between multiple .struct_ops & > .struct_ops.link as long as it's the same struct_ops struct > definition and the same function pointer field > > This allows reusing same BPF program for versioned struct_ops map > definitions, e.g.: > > SEC("struct_ops/test") > int BPF_PROG(foo) { ... } > > struct some_ops___v1 { int (*test)(void); }; > struct some_ops___v2 { int (*test)(void); }; > > SEC(".struct_ops.link") struct some_ops___v1 a = { .test = foo } > SEC(".struct_ops.link") struct some_ops___v2 b = { .test = foo } > > Signed-off-by: Eduard Zingerman <eddyz87@xxxxxxxxx> > --- > tools/lib/bpf/libbpf.c | 49 ++++++++++++++++++++++-------------------- > 1 file changed, 26 insertions(+), 23 deletions(-) > Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> [...]