
From: Yonghong Song <yhs@fb.com> mainline inclusion from mainline-v6.1-rc1 commit a00ed8430199abbc9d9bf43ea31795bfe98998ca category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I9FGRE Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i... -------------------------------- Currently in funciton __get_type_size(), the corresponding btf_type is returned only in invalid cases. Let us always return btf_type regardless of valid or invalid cases. Such a new functionality will be used in subsequent patches. Signed-off-by: Yonghong Song <yhs@fb.com> Link: https://lore.kernel.org/r/20220807175116.4179242-1-yhs@fb.com Signed-off-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Pu Lehui <pulehui@huawei.com> --- kernel/bpf/btf.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 9c0541d3e380..9fa9e5ffe7cd 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -4911,26 +4911,25 @@ bool btf_struct_ids_match(struct bpf_verifier_log *log, } static int __get_type_size(struct btf *btf, u32 btf_id, - const struct btf_type **bad_type) + const struct btf_type **ret_type) { const struct btf_type *t; + *ret_type = btf_type_by_id(btf, 0); if (!btf_id) /* void */ return 0; t = btf_type_by_id(btf, btf_id); while (t && btf_type_is_modifier(t)) t = btf_type_by_id(btf, t->type); - if (!t) { - *bad_type = btf->types[0]; + if (!t) return -EINVAL; - } + *ret_type = t; if (btf_type_is_ptr(t)) /* kernel size of pointer. Not BPF's size of pointer*/ return sizeof(void *); if (btf_type_is_int(t) || btf_type_is_enum(t)) return t->size; - *bad_type = t; return -EINVAL; } -- 2.34.1