Message ID | 20220910110120.339242-1-oss@lmb.io (mailing list archive) |
---|---|
State | Accepted |
Commit | a37a32583e282d8d815e22add29bc1e91e19951a |
Delegated to: | BPF |
Headers | show |
Series | [bpf,v2] bpf: btf: fix truncated last_member_type_id in btf_struct_resolve | expand |
Hello: This patch was applied to bpf/bpf.git (master) by Alexei Starovoitov <ast@kernel.org>: On Sat, 10 Sep 2022 11:01:20 +0000 you wrote: > When trying to finish resolving a struct member, btf_struct_resolve > saves the member type id in a u16 temporary variable. This truncates > the 32 bit type id value if it exceeds UINT16_MAX. > > As a result, structs that have members with type ids > UINT16_MAX and > which need resolution will fail with a message like this: > > [...] Here is the summary with links: - [bpf,v2] bpf: btf: fix truncated last_member_type_id in btf_struct_resolve https://git.kernel.org/bpf/bpf/c/a37a32583e28 You are awesome, thank you!
diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 7e64447659f3..36fd4b509294 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -3128,7 +3128,7 @@ static int btf_struct_resolve(struct btf_verifier_env *env, if (v->next_member) { const struct btf_type *last_member_type; const struct btf_member *last_member; - u16 last_member_type_id; + u32 last_member_type_id; last_member = btf_type_member(v->t) + v->next_member - 1; last_member_type_id = last_member->type;