Re: linux-next: build failure after merge of the bpf-next tree

From: Alan Maguire

Date: Mon Apr 27 2026 - 10:07:54 EST


On 27/04/2026 14:26, Thierry Reding wrote:
> Hi all,
>
> After merging the bpf-next tree, today's linux-next build (x86_64_perf)
> failed like this:
>
> CC builtin-trace.o
> builtin-trace.c: In function ‘syscall_arg__strtoul_btf_enum’:
> builtin-trace.c:972:27: error: comparison of integer expressions of different signedness: ‘int’ and ‘__u32’ {aka ‘unsigned int’} [-Werror=sign-compare]
> 972 | for (int i = 0; i < btf_vlen(bt); ++i, ++be) {
> | ^
> CC util/btf.o
> util/btf.c: In function ‘__btf_type__find_member_by_name’:
> util/btf.c:19:43: error: comparison of integer expressions of different signedness: ‘int’ and ‘__u32’ {aka ‘unsigned int’} [-Werror=sign-compare]
> 19 | for (i = 0, m = btf_members(t); i < btf_vlen(t); i++, m++) {
> | ^
>
> Caused by commit
>
> f7a6b9eaff3e ("bpf: Extend BTF UAPI vlen, kinds to use unused bits")
>
> I've fixed it up like below, but please fix this in your tree as well.
>
> Thanks,
> Thierry
>
> --- >8 ---
> From 4689669414ed7de19a69803714bc04e96fd82618 Mon Sep 17 00:00:00 2001
> From: Thierry Reding <treding@xxxxxxxxxx>
> Date: Mon, 27 Apr 2026 12:32:06 +0200
> Subject: [PATCH] perf: Fixup for btf_vlan() API change
>
> Signed-off-by: Thierry Reding <treding@xxxxxxxxxx>

Reviewed-by: Alan Maguire <alan.maguire@xxxxxxxxxx>

Thanks for the fix!

> ---
> tools/perf/builtin-trace.c | 2 +-
> tools/perf/util/btf.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
> index e58c49d047a2..d22e20a57b70 100644
> --- a/tools/perf/builtin-trace.c
> +++ b/tools/perf/builtin-trace.c
> @@ -969,7 +969,7 @@ static bool syscall_arg__strtoul_btf_enum(char *bf, size_t size, struct syscall_
> struct btf *btf = arg->trace->btf;
> struct btf_enum *be = btf_enum(bt);
>
> - for (int i = 0; i < btf_vlen(bt); ++i, ++be) {
> + for (u32 i = 0; i < btf_vlen(bt); ++i, ++be) {
> const char *name = btf__name_by_offset(btf, be->name_off);
> int max_len = max(size, strlen(name));
>
> diff --git a/tools/perf/util/btf.c b/tools/perf/util/btf.c
> index bb163fe87767..50d98f3e83bf 100644
> --- a/tools/perf/util/btf.c
> +++ b/tools/perf/util/btf.c
> @@ -14,7 +14,7 @@ const struct btf_member *__btf_type__find_member_by_name(struct btf *btf,
> {
> const struct btf_type *t = btf__type_by_id(btf, type_id);
> const struct btf_member *m;
> - int i;
> + u32 i;
>
> for (i = 0, m = btf_members(t); i < btf_vlen(t); i++, m++) {
> const char *current_member_name = btf__name_by_offset(btf, m->name_off);