This series fixes build errors observed when trying to build selftests with -Werror.
---------------------------------------------------------------- Guenter Roeck (13): clone3: clone3_cap_checkpoint_restore: Fix build errors seen with -Werror selftests: ntsync: Fix build errors -seen with -Werror selftests/filesystems: fclog: Fix build errors seen with -Werror selftests/filesystems: file_stressor: Fix build error seen with -Werror selftests/filesystems: anon_inode_test: Fix build error seen with -Werror selftest: af_unix: Support compilers without flex-array-member-not-at-end support selftest/futex: Comment out test_futex_mpol selftests: net: netlink-dumps: Avoid uninitialized variable error selftests/seccomp: Fix build error seen with -Werror selftests: net: Work around build error seen with -Werror selftests/fs/mount-notify: Fix build failure seen with -Werror selftests/fs/mount-notify-ns: Fix build failures seen with -Werror selftests: net: tfo: Fix build error seen with -Werror
tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c | 4 ---- tools/testing/selftests/drivers/ntsync/ntsync.c | 4 ++-- tools/testing/selftests/filesystems/anon_inode_test.c | 1 + tools/testing/selftests/filesystems/fclog.c | 1 + tools/testing/selftests/filesystems/file_stressor.c | 2 -- .../testing/selftests/filesystems/mount-notify/mount-notify_test.c | 3 ++- .../selftests/filesystems/mount-notify/mount-notify_test_ns.c | 3 ++- tools/testing/selftests/futex/functional/futex_numa_mpol.c | 2 ++ tools/testing/selftests/net/af_unix/Makefile | 2 +- tools/testing/selftests/net/lib/ksft.h | 6 ++++-- tools/testing/selftests/net/netlink-dumps.c | 2 +- tools/testing/selftests/net/tfo.c | 3 ++- tools/testing/selftests/seccomp/seccomp_bpf.c | 3 ++- 13 files changed, 20 insertions(+), 16 deletions(-)
Fix:
seccomp_bpf.c: In function ‘UPROBE_setup’: seccomp_bpf.c:5175:74: error: pointer type mismatch in conditional expression
by type casting the argument to get_uprobe_offset().
Fixes: 9ffc7a635c35a ("selftests/seccomp: validate uprobe syscall passes through seccomp") Cc: Jiri Olsa jolsa@kernel.org Cc: Peter Zijlstra (Intel) peterz@infradead.org Signed-off-by: Guenter Roeck linux@roeck-us.net --- tools/testing/selftests/seccomp/seccomp_bpf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c index 874f17763536..2584f4f5c062 100644 --- a/tools/testing/selftests/seccomp/seccomp_bpf.c +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c @@ -5172,7 +5172,8 @@ FIXTURE_SETUP(UPROBE) ASSERT_GE(bit, 0); }
- offset = get_uprobe_offset(variant->uretprobe ? probed_uretprobe : probed_uprobe); + offset = get_uprobe_offset(variant->uretprobe ? + (void *)probed_uretprobe : (void *)probed_uprobe); ASSERT_GE(offset, 0);
if (variant->uretprobe)
Fix
fclog.c:37:21: error: call to undeclared function 'open' fclog.c:37:47: error: use of undeclared identifier 'O_RDONLY'; did you mean 'MS_RDONLY'? fclog.c:37:56: error: use of undeclared identifier 'O_CLOEXEC'
by adding the missing include file.
Fixes: df579e471111b ("selftests/filesystems: add basic fscontext log tests") Cc: Aleksa Sarai cyphar@cyphar.com Signed-off-by: Guenter Roeck linux@roeck-us.net --- tools/testing/selftests/filesystems/fclog.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/filesystems/fclog.c b/tools/testing/selftests/filesystems/fclog.c index 912a8b755c3b..d7cc3aaa8672 100644 --- a/tools/testing/selftests/filesystems/fclog.c +++ b/tools/testing/selftests/filesystems/fclog.c @@ -6,6 +6,7 @@
#include <assert.h> #include <errno.h> +#include <fcntl.h> #include <sched.h> #include <stdio.h> #include <stdlib.h>
Fix:
gcc: error: unrecognized command-line option ‘-Wflex-array-member-not-at-end’
by making the compiler option dependent on its support.
Fixes: 1838731f1072c ("selftest: af_unix: Add -Wall and -Wflex-array-member-not-at-end to CFLAGS.") Cc: Kuniyuki Iwashima kuniyu@google.com Signed-off-by: Guenter Roeck linux@roeck-us.net --- tools/testing/selftests/net/af_unix/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/af_unix/Makefile b/tools/testing/selftests/net/af_unix/Makefile index 528d14c598bb..04e82a8d21db 100644 --- a/tools/testing/selftests/net/af_unix/Makefile +++ b/tools/testing/selftests/net/af_unix/Makefile @@ -1,4 +1,4 @@ -CFLAGS += $(KHDR_INCLUDES) -Wall -Wflex-array-member-not-at-end +CFLAGS += $(KHDR_INCLUDES) -Wall $(call cc-option,-Wflex-array-member-not-at-end)
TEST_GEN_PROGS := \ diag_uid \
test_futex_mpol() is not called, resulting in
futex_numa_mpol.c:134:13: error: ‘test_futex_mpol’ defined but not used
if built with -Werror. Disable the function but keep it in case it was supposed to be used.
Fixes: d35ca2f64272 ("selftests/futex: Refactor futex_numa_mpol with kselftest_harness.h") Cc: André Almeida andrealmeid@igalia.com Signed-off-by: Guenter Roeck linux@roeck-us.net --- tools/testing/selftests/futex/functional/futex_numa_mpol.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/tools/testing/selftests/futex/functional/futex_numa_mpol.c b/tools/testing/selftests/futex/functional/futex_numa_mpol.c index d037a3f10ee8..8e3d17d66684 100644 --- a/tools/testing/selftests/futex/functional/futex_numa_mpol.c +++ b/tools/testing/selftests/futex/functional/futex_numa_mpol.c @@ -131,10 +131,12 @@ static void test_futex(void *futex_ptr, int err_value) __test_futex(futex_ptr, err_value, FUTEX2_SIZE_U32 | FUTEX_PRIVATE_FLAG | FUTEX2_NUMA); }
+#ifdef NOTUSED static void test_futex_mpol(void *futex_ptr, int err_value) { __test_futex(futex_ptr, err_value, FUTEX2_SIZE_U32 | FUTEX_PRIVATE_FLAG | FUTEX2_NUMA | FUTEX2_MPOL); } +#endif
TEST(futex_numa_mpol) {
Fix
anon_inode_test.c:45:12: error: call to undeclared function 'execveat'
by adding the missing include file.
Fixes: f8ca403ae77cb ("selftests/filesystems: add exec() test for anonymous inodes") Cc: Christian Brauner brauner@kernel.org Signed-off-by: Guenter Roeck linux@roeck-us.net --- This patch does not fix:
anon_inode_test.c: In function ‘anon_inode_no_exec’: anon_inode_test.c:46:19: error: argument 3 null where non-null expected
because I have no idea how to do that.
tools/testing/selftests/filesystems/anon_inode_test.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/filesystems/anon_inode_test.c b/tools/testing/selftests/filesystems/anon_inode_test.c index 73e0a4d4fb2f..5ddcfd2927f9 100644 --- a/tools/testing/selftests/filesystems/anon_inode_test.c +++ b/tools/testing/selftests/filesystems/anon_inode_test.c @@ -4,6 +4,7 @@
#include <fcntl.h> #include <stdio.h> +#include <unistd.h> #include <sys/stat.h>
#include "../kselftest_harness.h"
On Thu, 4 Dec 2025 08:17:14 -0800 Guenter Roeck wrote:
This series fixes build errors observed when trying to build selftests with -Werror.
If your intention is to make -Werror the default please stop. Defaulting WERROR to enabled is one of the silliest things we have done in recent past.
People will try to use new compilers on a kernel after it has already been released. Not being able to build the kernel because of some false positive warning in another subsystem is so annoying :|
On Thu, Dec 04, 2025 at 08:27:54AM -0800, Jakub Kicinski wrote:
On Thu, 4 Dec 2025 08:17:14 -0800 Guenter Roeck wrote:
This series fixes build errors observed when trying to build selftests with -Werror.
If your intention is to make -Werror the default please stop. Defaulting WERROR to enabled is one of the silliest things we have done in recent past.
No, that is not the idea, and not the intention.
The Google infrastructure builds the kernel, including selftests, with -Werror enabled. This triggers a number of build errors when trying to build selftests with the 6.18 kernel. That means I have three options: 1) Disable -Werror in selftest builds and accept that some real problems will slip through. Not really a good option, and not acceptable. 2) Fix the problems in the upstream kernel and backport. 3) Fix the problems downstream only. Not really a good option but I guess we'll have to do it if this series (and/or follow-up patches needed to support glibc older than 2.36) is rejected.
We'll have to carry the patches downstream if 2) is rejected, but at the very least I wanted to give it a try.
Guenter
Fix:
clone3_cap_checkpoint_restore.c:56:7: error: unused variable 'ret' 56 | int ret; | ^~~ clone3_cap_checkpoint_restore.c:57:8: error: unused variable 'tmp' 57 | char tmp = 0; | ^~~ clone3_cap_checkpoint_restore.c:138:6: error: unused variable 'ret' 138 | int ret = 0;
by removing the unused variables.
Fixes: 1d27a0be16d6 ("selftests: add clone3() CAP_CHECKPOINT_RESTORE test") Cc: Adrian Reber areber@redhat.com Signed-off-by: Guenter Roeck linux@roeck-us.net --- .../testing/selftests/clone3/clone3_cap_checkpoint_restore.c | 4 ---- 1 file changed, 4 deletions(-)
diff --git a/tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c b/tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c index 3c196fa86c99..976e92c259fc 100644 --- a/tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c +++ b/tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c @@ -53,9 +53,6 @@ static int call_clone3_set_tid(struct __test_metadata *_metadata, }
if (pid == 0) { - int ret; - char tmp = 0; - TH_LOG("I am the child, my PID is %d (expected %d)", getpid(), set_tid[0]);
if (set_tid[0] != getpid()) @@ -135,7 +132,6 @@ TEST(clone3_cap_checkpoint_restore) { pid_t pid; int status; - int ret = 0; pid_t set_tid[1];
test_clone3_supported();
On Thu, 4 Dec 2025 08:17:20 -0800 Guenter Roeck wrote:
-CFLAGS += $(KHDR_INCLUDES) -Wall -Wflex-array-member-not-at-end +CFLAGS += $(KHDR_INCLUDES) -Wall $(call cc-option,-Wflex-array-member-not-at-end)
Hm, the Claude code review we have hooked up to patchwork says:
Is cc-option available in the selftest build environment? Looking at tools/testing/selftests/lib.mk (included at line 14), it doesn't include scripts/Makefile.compiler where cc-option is defined. When cc-option is undefined, $(call cc-option,...) expands to an empty string, which means the -Wflex-array-member-not-at-end flag won't be added even on compilers that support it.
This defeats the purpose of commit 1838731f1072c which added the warning flag to catch flexible array issues.
For comparison, tools/testing/selftests/nolibc/Makefile explicitly includes scripts/Makefile.compiler before using cc-option.
Testing it:
$ make -C tools/testing/selftests/ TARGETS=net/af_unix Q= V=1 make: Entering directory '/home/kicinski/devel/linux/tools/testing/selftests' make[1]: Entering directory '/home/kicinski/devel/linux/tools/testing/selftests/net/af_unix' gcc -isystem /home/kicinski/devel/linux/usr/include -Wall -D_GNU_SOURCE= diag_uid.c -o /home/kicinski/devel/linux/tools/testing/selftests/net/af_unix/diag_uid
looks like the flag just disappears. Even tho:
gcc version 15.2.1
On Thu, 4 Dec 2025 09:16:16 -0800 Guenter Roeck wrote:
On Thu, Dec 04, 2025 at 08:27:54AM -0800, Jakub Kicinski wrote:
On Thu, 4 Dec 2025 08:17:14 -0800 Guenter Roeck wrote:
This series fixes build errors observed when trying to build selftests with -Werror.
If your intention is to make -Werror the default please stop. Defaulting WERROR to enabled is one of the silliest things we have done in recent past.
No, that is not the idea, and not the intention.
The Google infrastructure builds the kernel, including selftests, with -Werror enabled. This triggers a number of build errors when trying to build selftests with the 6.18 kernel. That means I have three options:
- Disable -Werror in selftest builds and accept that some real problems will slip through. Not really a good option, and not acceptable.
- Fix the problems in the upstream kernel and backport.
- Fix the problems downstream only. Not really a good option but I guess we'll have to do it if this series (and/or follow-up patches needed to support glibc older than 2.36) is rejected.
We'll have to carry the patches downstream if 2) is rejected, but at the very least I wanted to give it a try.
Understood, of course we should fix the warnings! If we're fixing warnings, tho, I wouldn't have mentioned -Werror in the _subject_. It doesn't affect which warnings are enabled, AFAIK?
On Thu, Dec 04, 2025 at 09:43:20AM -0800, Jakub Kicinski wrote:
On Thu, 4 Dec 2025 09:16:16 -0800 Guenter Roeck wrote:
On Thu, Dec 04, 2025 at 08:27:54AM -0800, Jakub Kicinski wrote:
On Thu, 4 Dec 2025 08:17:14 -0800 Guenter Roeck wrote:
This series fixes build errors observed when trying to build selftests with -Werror.
If your intention is to make -Werror the default please stop. Defaulting WERROR to enabled is one of the silliest things we have done in recent past.
No, that is not the idea, and not the intention.
The Google infrastructure builds the kernel, including selftests, with -Werror enabled. This triggers a number of build errors when trying to build selftests with the 6.18 kernel. That means I have three options:
- Disable -Werror in selftest builds and accept that some real problems will slip through. Not really a good option, and not acceptable.
- Fix the problems in the upstream kernel and backport.
- Fix the problems downstream only. Not really a good option but I guess we'll have to do it if this series (and/or follow-up patches needed to support glibc older than 2.36) is rejected.
We'll have to carry the patches downstream if 2) is rejected, but at the very least I wanted to give it a try.
Understood, of course we should fix the warnings! If we're fixing warnings, tho, I wouldn't have mentioned -Werror in the _subject_. It doesn't affect which warnings are enabled, AFAIK?
I'll update the subjects and descriptions accordingly.
Thanks, Guenter
On Thu, Dec 04, 2025 at 09:40:54AM -0800, Jakub Kicinski wrote:
On Thu, 4 Dec 2025 08:17:20 -0800 Guenter Roeck wrote:
-CFLAGS += $(KHDR_INCLUDES) -Wall -Wflex-array-member-not-at-end +CFLAGS += $(KHDR_INCLUDES) -Wall $(call cc-option,-Wflex-array-member-not-at-end)
Hm, the Claude code review we have hooked up to patchwork says:
Is cc-option available in the selftest build environment? Looking at tools/testing/selftests/lib.mk (included at line 14), it doesn't include scripts/Makefile.compiler where cc-option is defined. When cc-option is undefined, $(call cc-option,...) expands to an empty string, which means the -Wflex-array-member-not-at-end flag won't be added even on compilers that support it.
This defeats the purpose of commit 1838731f1072c which added the warning flag to catch flexible array issues.
For comparison, tools/testing/selftests/nolibc/Makefile explicitly includes scripts/Makefile.compiler before using cc-option.
Testing it:
$ make -C tools/testing/selftests/ TARGETS=net/af_unix Q= V=1 make: Entering directory '/home/kicinski/devel/linux/tools/testing/selftests' make[1]: Entering directory '/home/kicinski/devel/linux/tools/testing/selftests/net/af_unix' gcc -isystem /home/kicinski/devel/linux/usr/include -Wall -D_GNU_SOURCE= diag_uid.c -o /home/kicinski/devel/linux/tools/testing/selftests/net/af_unix/diag_uid
looks like the flag just disappears. Even tho:
gcc version 15.2.1
Oops :). I didn't expect that, sorry. Thanks for finding!
... and I guess it's time to set up AI in my environment.
Guenter
On Thu, Dec 04, 2025 at 09:16:16AM -0800, Guenter Roeck wrote:
On Thu, Dec 04, 2025 at 08:27:54AM -0800, Jakub Kicinski wrote:
On Thu, 4 Dec 2025 08:17:14 -0800 Guenter Roeck wrote:
This series fixes build errors observed when trying to build selftests with -Werror.
If your intention is to make -Werror the default please stop. Defaulting WERROR to enabled is one of the silliest things we have done in recent past.
No, that is not the idea, and not the intention.
The Google infrastructure builds the kernel, including selftests, with -Werror enabled. This triggers a number of build errors when trying to build selftests with the 6.18 kernel. That means I have three options:
- Disable -Werror in selftest builds and accept that some real problems will slip through. Not really a good option, and not acceptable.
- Fix the problems in the upstream kernel and backport.
The series fixes build warnings that appear regardless of -Werror, yes? That on its face is an improvement, so maybe just adjust the Subject/changelogs?
On Thu, Dec 04, 2025 at 12:03:29PM -0800, Kees Cook wrote:
On Thu, Dec 04, 2025 at 09:16:16AM -0800, Guenter Roeck wrote:
On Thu, Dec 04, 2025 at 08:27:54AM -0800, Jakub Kicinski wrote:
On Thu, 4 Dec 2025 08:17:14 -0800 Guenter Roeck wrote:
This series fixes build errors observed when trying to build selftests with -Werror.
If your intention is to make -Werror the default please stop. Defaulting WERROR to enabled is one of the silliest things we have done in recent past.
No, that is not the idea, and not the intention.
The Google infrastructure builds the kernel, including selftests, with -Werror enabled. This triggers a number of build errors when trying to build selftests with the 6.18 kernel. That means I have three options:
- Disable -Werror in selftest builds and accept that some real problems will slip through. Not really a good option, and not acceptable.
- Fix the problems in the upstream kernel and backport.
The series fixes build warnings that appear regardless of -Werror, yes? That on its face is an improvement, so maybe just adjust the Subject/changelogs?
Yes, I'll do that.
Thanks, Guenter
linux-kselftest-mirror@lists.linaro.org