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

From: Thierry Reding <[email-masked]>
Date: Mon, 27 Apr 2026 15:26:01 +0200

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]>
---
 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);
-- 
2.52.0
--- >8 ---