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

From: Alan Maguire <[email-masked]>
Date: Mon, 27 Apr 2026 14:43:58 +0100

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 <[email-masked]>
> Date: Mon, 27 Apr 2026 12:32:06 +0200
> Subject: [PATCH] perf: Fixup for btf_vlan() API change
> 
> Signed-off-by: Thierry Reding <[email-masked]>

Reviewed-by: Alan Maguire <[email-masked]>

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);