From 3469796aafca8af03dd25d07734bd1a30355183d Mon Sep 17 00:00:00 2001 From: Andrii Nakryiko Date: Wed, 24 Aug 2022 11:22:11 +0800 Subject: [PATCH] libbpf: Tighten BTF type ID rewriting with error checking mainline inclusion from mainline-5.13-rc1 commit 83a157279f2125ce1c4d6d93750440853746dff0 category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I5EUVD CVE: NA Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=83a157279f2125ce1c4d6d93750440853746dff0 ------------------------------------------------- It should never fail, but if it does, it's better to know about this rather than end up with nonsensical type IDs. Signed-off-by: Andrii Nakryiko Signed-off-by: Alexei Starovoitov Acked-by: Yonghong Song Link: https://lore.kernel.org/bpf/20210423181348.1801389-11-andrii@kernel.org (cherry picked from commit 83a157279f2125ce1c4d6d93750440853746dff0) Signed-off-by: Wang Yufen --- tools/lib/bpf/linker.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/lib/bpf/linker.c b/tools/lib/bpf/linker.c index a5971eb36fae..f19a15892654 100644 --- a/tools/lib/bpf/linker.c +++ b/tools/lib/bpf/linker.c @@ -1429,6 +1429,13 @@ static int linker_fixup_btf(struct src_obj *obj) static int remap_type_id(__u32 *type_id, void *ctx) { int *id_map = ctx; + int new_id = id_map[*type_id]; + + /* Error out if the type wasn't remapped. Ignore VOID which stays VOID. */ + if (new_id == 0 && *type_id != 0) { + pr_warn("failed to find new ID mapping for original BTF type ID %u\n", *type_id); + return -EINVAL; + } *type_id = id_map[*type_id]; -- GitLab