This patchset fixes a bug in btf_dedup() algorithm, which under specific hash collision causes infinite loop. It also exposes ability to tune BTF deduplication table size, with double purpose of allowing applications to adjust size according to the size of BTF data, as well as allowing a simple way to force hash collisions by setting table size to 1. - Patch #1 fixes bug in btf_dedup testing code that's checking strings - Patch #2 fixes pointer arg formatting in btf.h - Patch #3 adds option to specify custom dedup table size - Patch #4 fixes aforementioned bug in btf_dedup - Patch #5 adds test that validates the fix v1->v2: - remove "Fixes" from formatting change patch - extract roundup_pow2_max func for dedup table size - btf_equal_struct -> btf_shallow_equal_struct - explain in comment why we can't rely on just btf_dedup_is_equiv Andrii Nakryiko (5): selftests/bpf: fix btf_dedup testing code libbpf: fix formatting for btf_ext__get_raw_data btf: allow to customize dedup hash table size btf: fix bug with resolving STRUCT/UNION into corresponding FWD selftests/bpf: add btf_dedup test of FWD/STRUCT resolution tools/lib/bpf/btf.c | 73 +++++++++++++++++++------- tools/lib/bpf/btf.h | 3 +- tools/testing/selftests/bpf/.gitignore | 1 + tools/testing/selftests/bpf/test_btf.c | 49 ++++++++++++++++- 4 files changed, 103 insertions(+), 23 deletions(-) -- 2.17.1