bpf: Refactor btf_nested_type_is_trusted().
authorAlexei Starovoitov <ast@kernel.org>
Tue, 4 Apr 2023 04:50:24 +0000 (21:50 -0700)
committerAndrii Nakryiko <andrii@kernel.org>
Tue, 4 Apr 2023 23:57:14 +0000 (16:57 -0700)
commit63260df1396578226ac3134cf7f764690002e70e
treec7b94a6b73081b69775b8c8d5c6ad1c52e02bdae
parentb7e852a9ec96635168c04204fb7cf1f7390b9a8c
bpf: Refactor btf_nested_type_is_trusted().

btf_nested_type_is_trusted() tries to find a struct member at corresponding offset.
It works for flat structures and falls apart in more complex structs with nested structs.
The offset->member search is already performed by btf_struct_walk() including nested structs.
Reuse this work and pass {field name, field btf id} into btf_nested_type_is_trusted()
instead of offset to make BTF_TYPE_SAFE*() logic more robust.

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: David Vernet <void@manifault.com>
Link: https://lore.kernel.org/bpf/20230404045029.82870-4-alexei.starovoitov@gmail.com
include/linux/bpf.h
kernel/bpf/btf.c
kernel/bpf/verifier.c