mirror of
https://github.com/netdata/libbpf.git
synced 2026-03-24 10:19:07 +08:00
cba1a119cfd18815454035727148ae9174da51e3
When checking available canonical candidates for struct/union algorithm
utilizes btf_dedup_is_equiv to determine if candidate is suitable. This
check is not enough when candidate is corresponding FWD for that
struct/union, because according to equivalence logic they are
equivalent. When it so happens that FWD and STRUCT/UNION end in hashing
to the same bucket, it's possible to create remapping loop from FWD to
STRUCT and STRUCT to same FWD, which will cause btf_dedup() to loop
forever.
This patch fixes the issue by additionally checking that type and
canonical candidate are strictly equal (utilizing btf_equal_struct).
Fixes: d5caef5b5655 ("btf: add BTF types deduplication algorithm")
Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Acked-by: Song Liu <songliubraving@fb.com>
Acked-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This is a mirror of bpf-next linux tree (https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next) bpf-next/tools/lib/bpf directory plus its supporting header files. The following files will by sync'ed with bpf-next repo: src/ <-> bpf-next/tools/lib/bpf/ include/uapi/linux/bpf_common.h <-> bpf-next/tools/include/uapi/linux/bpf_common.h include/uapi/linux/bpf.h <-> bpf-next/tools/include/uapi/linux/bpf.h include/uapi/linux/btf.h <-> bpf-next/tools/include/uapi/linux/btf.h include/uapi/linux/if_link.h <-> bpf-next/tools/include/uapi/linux/if_link.h include/uapi/linux/netlink.h <-> bpf-next/tools/include/uapi/linux/netlink.h include/tools/libc_compat.h <-> bpf-next/tools/include/tools/libc_compat.h Other header files at this repo (include/linux/*.h) are reduced versions of their counterpart files at bpf-next/tools/include/linux/*.h to make compilation successful. Build ===== To build static library libbpf.a: cd src make To build both static libbpf.a and shared libbpf.so libraries in directory build/ and install them together with libbpf headers in a staging directory root/: cd src mkdir build root BUILD_SHARED=y OBJDIR=build DESTDIR=root make install
Description
Languages
C
98.3%
Shell
1.4%
Makefile
0.3%