summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorPu Lehui <pulehui@huawei.com>2025-01-15 10:02:40 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-02-08 10:01:39 +0100
commit9e59b09a0a3e90ad13dcea3e26b94bd2122ad2a0 (patch)
treea33732390e2ee61f83dcc84f04e9c13717630647 /tools
parentb28e4c727597133a591a8ac2e53156de7fc31c0e (diff)
downloadlinux-9e59b09a0a3e90ad13dcea3e26b94bd2122ad2a0.tar.gz
linux-9e59b09a0a3e90ad13dcea3e26b94bd2122ad2a0.tar.bz2
linux-9e59b09a0a3e90ad13dcea3e26b94bd2122ad2a0.zip
libbpf: Fix incorrect traversal end type ID when marking BTF_IS_EMBEDDED
[ Upstream commit 5ca681a86ef93369685cb63f71994f4cf7303e7c ] When redirecting the split BTF to the vmlinux base BTF, we need to mark the distilled base struct/union members of split BTF structs/unions in id_map with BTF_IS_EMBEDDED. This indicates that these types must match both name and size later. Therefore, we need to traverse the entire split BTF, which involves traversing type IDs from nr_dist_base_types to nr_types. However, the current implementation uses an incorrect traversal end type ID, so let's correct it. Fixes: 19e00c897d50 ("libbpf: Split BTF relocation") Signed-off-by: Pu Lehui <pulehui@huawei.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20250115100241.4171581-3-pulehui@huaweicloud.com Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/lib/bpf/btf_relocate.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/lib/bpf/btf_relocate.c b/tools/lib/bpf/btf_relocate.c
index b72f83e15156..53d1f3541bce 100644
--- a/tools/lib/bpf/btf_relocate.c
+++ b/tools/lib/bpf/btf_relocate.c
@@ -212,7 +212,7 @@ static int btf_relocate_map_distilled_base(struct btf_relocate *r)
* need to match both name and size, otherwise embedding the base
* struct/union in the split type is invalid.
*/
- for (id = r->nr_dist_base_types; id < r->nr_split_types; id++) {
+ for (id = r->nr_dist_base_types; id < r->nr_dist_base_types + r->nr_split_types; id++) {
err = btf_mark_embedded_composite_type_ids(r, id);
if (err)
goto done;