On Wed, 2024-07-03 at 17:15 -0700, Andrii Nakryiko wrote: > BPF skeleton was designed from day one to be extensible. Generated BPF > skeleton code specifies actual sizes of map/prog/variable skeletons for > that reason and libbpf is supposed to work with newer/older versions > correctly. > > Unfortunately, it was missed that we implicitly embed hard-coded most > up-to-date (according to libbpf's version of libbpf.h header used to > compile BPF skeleton header) sizes of those strucs, which can differ ^^ nit: "struct" > from the actual sizes at runtime when libbpf is used as a shared > library. > > We have a few places were we just index array of maps/progs/vars, which > implicitly uses these potentially invalid sizes of structs. > > This patch aims to fix this problem going forward. Once this lands, > we'll backport these changes in Github repo to create patched releases > for older libbpfs. > > Fixes: d66562fba1ce ("libbpf: Add BPF object skeleton support") > Fixes: 430025e5dca5 ("libbpf: Add subskeleton scaffolding") > Co-developed-by: Mykyta Yatsenko <yatsenko@xxxxxxxx> > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > --- I double-checked all uses of bpf_object_skeleton->{maps,progs}, all seems in order. Acked-by: Eduard Zingerman <eddyz87@xxxxxxxxx> [...]