Re: [PATCH v3 3/3] libbpf: plumb btf_vmlinux_value_type_id and btf_fd in gen_loader
From: bot+bpf-ci
Date: Tue May 26 2026 - 11:35:41 EST
> diff --git a/tools/lib/bpf/gen_loader.c b/tools/lib/bpf/gen_loader.c
> index 9478b8f78f26..b0d8551272f2 100644
> --- a/tools/lib/bpf/gen_loader.c
> +++ b/tools/lib/bpf/gen_loader.c
> @@ -525,13 +525,14 @@ void bpf_gen__map_create(struct bpf_gen *gen,
> attr.max_entries = tgt_endian(max_entries);
> attr.btf_key_type_id = tgt_endian(map_attr->btf_key_type_id);
> attr.btf_value_type_id = tgt_endian(map_attr->btf_value_type_id);
> + attr.btf_vmlinux_value_type_id = tgt_endian(map_attr->btf_vmlinux_value_type_id);
>
> map_create_attr = add_data(gen, &attr, attr_size);
> pr_debug("gen: map_create: %s idx %d type %d value_type_id %d, attr: off %d size %d\n",
> map_name, map_idx, map_type, map_attr->btf_value_type_id,
> map_create_attr, attr_size);
>
> - if (map_attr->btf_value_type_id)
> + if (map_attr->btf_value_type_id || map_attr->btf_vmlinux_value_type_id)
> /* populate union bpf_attr with btf_fd saved in the stack earlier */
> move_stack2blob(gen, attr_field(map_create_attr, btf_fd), 4,
> stack_off(btf_fd));
This looks like a bug fix for STRUCT_OPS map creation in gen_loader.
The bug was introduced in commit 992c4225419a ("libbpf: Unify low-level
map creation APIs w/ new bpf_map_create()"), which added
btf_vmlinux_value_type_id support to bpf_map_create() but failed to
plumb it through in gen_loader.c's bpf_gen__map_create() function.
Should this include:
Fixes: 992c4225419a ("libbpf: Unify low-level map creation APIs w/ new bpf_map_create()")
---
AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md
CI run summary: https://github.com/kernel-patches/bpf/actions/runs/26454419965