mbox series

[v2,bpf-next,0/5] btf_dedup algorithm and test fixes

Message ID 20190228233125.1013080-1-andriin@fb.com
Headers show
Series btf_dedup algorithm and test fixes | expand

Message

Andrii Nakryiko Feb. 28, 2019, 11:31 p.m. UTC
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(-)

Comments

Daniel Borkmann March 1, 2019, 12:42 a.m. UTC | #1
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!