Fix libbpf's global data map mmap()'ing logic to make BPF objects loaded through generic bpf_object__load() API interoperable with BPF subskeleton instantiated from such BPF object. The issue is in re-mmap()'ing of global data maps after BPF object is loaded into kernel, which is currently done in BPF skeleton-specific code, and should instead be done in generic and common bpf_object_load() logic. See patch #2 for the fix, patch #3 for the selftests. Patch #1 is preliminary fix for existing spin_lock selftests which currently works by accident. Andrii Nakryiko (3): selftests/bpf: fix test_spin_lock_fail.c's global vars usage libbpf: move global data mmap()'ing into bpf_object__load() selftests/bpf: validate generic bpf_object and subskel APIs work together tools/lib/bpf/libbpf.c | 83 +++++++++---------- .../selftests/bpf/prog_tests/subskeleton.c | 76 ++++++++++++++++- .../selftests/bpf/progs/test_spin_lock_fail.c | 4 +- 3 files changed, 117 insertions(+), 46 deletions(-) -- 2.43.5