On 03/01/2019 12:31 AM, Andrii Nakryiko wrote: > 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(-) > Applied, thanks!