* [PATCH] selftests/net: fix unused return value warnings in ksft.h
@ 2025-09-06 15:59 Nai-Chen Cheng
2025-09-09 1:20 ` Jakub Kicinski
0 siblings, 1 reply; 5+ messages in thread
From: Nai-Chen Cheng @ 2025-09-06 15:59 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Shuah Khan
Cc: netdev, linux-kselftest, linux-kernel, linux-kernel-mentees,
Nai-Chen Cheng
The write() and read() system calls in ksft_ready() and ksft_wait()
functions return values that were not being checked, causing complier
warnings with GCC.
Fix the warnings by casting the return values to void to indicate that
ignoring them is intentional.
Signed-off-by: Nai-Chen Cheng <bleach1827@gmail.com>
---
tools/testing/selftests/net/lib/ksft.h | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/net/lib/ksft.h b/tools/testing/selftests/net/lib/ksft.h
index 17dc34a612c64e549f634e82a23f317b2ff6a282..0ca2cb408c643bc76c0aaea684f0e7e28e6b05a6 100644
--- a/tools/testing/selftests/net/lib/ksft.h
+++ b/tools/testing/selftests/net/lib/ksft.h
@@ -10,6 +10,7 @@ static inline void ksft_ready(void)
{
const char msg[7] = "ready\n";
char *env_str;
+ ssize_t ret;
int fd;
env_str = getenv("KSFT_READY_FD");
@@ -24,7 +25,8 @@ static inline void ksft_ready(void)
fd = STDOUT_FILENO;
}
- write(fd, msg, sizeof(msg));
+ ret = write(fd, msg, sizeof(msg));
+ (void)ret;
if (fd != STDOUT_FILENO)
close(fd);
}
@@ -33,6 +35,7 @@ static inline void ksft_wait(void)
{
char *env_str;
char byte;
+ ssize_t ret;
int fd;
env_str = getenv("KSFT_WAIT_FD");
@@ -48,7 +51,8 @@ static inline void ksft_wait(void)
fd = STDIN_FILENO;
}
- read(fd, &byte, sizeof(byte));
+ ret = read(fd, &byte, sizeof(byte));
+ (void)ret;
if (fd != STDIN_FILENO)
close(fd);
}
---
base-commit: d1d10cea0895264cc3769e4d9719baa94f4b250b
change-id: 20250906-selftests-net-ksft-37266937bc4d
Best regards,
--
Nai-Chen Cheng <bleach1827@gmail.com>
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] selftests/net: fix unused return value warnings in ksft.h
2025-09-06 15:59 [PATCH] selftests/net: fix unused return value warnings in ksft.h Nai-Chen Cheng
@ 2025-09-09 1:20 ` Jakub Kicinski
2025-09-09 10:00 ` Nai-Chen(Simone) Cheng
0 siblings, 1 reply; 5+ messages in thread
From: Jakub Kicinski @ 2025-09-09 1:20 UTC (permalink / raw)
To: Nai-Chen Cheng
Cc: David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Shuah Khan, netdev, linux-kselftest, linux-kernel,
linux-kernel-mentees
On Sat, 06 Sep 2025 23:59:28 +0800 Nai-Chen Cheng wrote:
> The write() and read() system calls in ksft_ready() and ksft_wait()
> functions return values that were not being checked, causing complier
> warnings with GCC.
Is it just a GCC warning or rather a combination of GCC and some
misguided glibc decorator to force check the return of read/write?
Naming the compiler versions and the warning flag which enables
this would be useful. We don't see it building with normal warning
level today.
> Fix the warnings by casting the return values to void to indicate that
> ignoring them is intentional.
> ret = read(fd, &byte, sizeof(byte));
> (void)ret;
Can you not cast the read() to void directly?
--
pw-bot: cr
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] selftests/net: fix unused return value warnings in ksft.h
2025-09-09 1:20 ` Jakub Kicinski
@ 2025-09-09 10:00 ` Nai-Chen(Simone) Cheng
2025-09-09 23:25 ` Jakub Kicinski
0 siblings, 1 reply; 5+ messages in thread
From: Nai-Chen(Simone) Cheng @ 2025-09-09 10:00 UTC (permalink / raw)
To: Jakub Kicinski
Cc: David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Shuah Khan, netdev, linux-kselftest, linux-kernel,
linux-kernel-mentees
On 2025-09-09 09:20, Jakub Kicinski wrote:
> Is it just a GCC warning or rather a combination of GCC and some
> misguided glibc decorator to force check the return of read/write?
> Naming the compiler versions and the warning flag which enables
> this would be useful. We don't see it building with normal warning
> level today.
Thanks for the review!
I found that the warnings occur under specific build
conditions that explain why it's not consistently seen:
The warning appears when manually cleaning and rebuilding net/lib/:
cd tools/testing/selftests/net/lib/
make clean && make
The warning messages are:
ksft.h: In function ‘ksft_ready’:
ksft.h:27:9: warning: ignoring return value of ‘write’ declared with
attribute ‘warn_unused_result’ [-Wunused-result]
ksft.h: In function ‘ksft_wait’:
ksft.h:51:9: warning: ignoring return value of ‘read’ declared with
attribute ‘warn_unused_result’ [-Wunused-result]
This is triggered by:
- GCC version: 14.2.0
- -Wall flag (which includes -Wunused-result)
During investigation of this unused result warning and following up on
the patch by Minh-Quang Bui [1], I also discovered an issue with the
selftests build system: running 'make clean' from
tools/testing/selftests/ doesn't clean objects in net/lib/ because the
clean target doesn't include $(INSTALL_DEPS_TARGET). This explains why
net/lib compiled objects persist after cleaning and why the warning only
appears with manual cleaning of that specific directory.
> Can you not cast the read() to void directly?
Sure. Direct casting is much cleaner. I haven't noticed it... Thanks for
the advice.
Would it be acceptable to:
1. Send a v2 of this patch with the direct void casting approach and
more precise commit message?
2. Send a separate patch to fix the selftests Makefile clean target to
include $(INSTALL_DEPS_TARGET)?
[1]
https://lore.kernel.org/all/20250601142914.13379-1-minhquangbui99@gmail.com/
Thanks,
Nai-Chen Cheng
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] selftests/net: fix unused return value warnings in ksft.h
2025-09-09 10:00 ` Nai-Chen(Simone) Cheng
@ 2025-09-09 23:25 ` Jakub Kicinski
2025-09-10 11:16 ` Nai-Chen(Simone) Cheng
0 siblings, 1 reply; 5+ messages in thread
From: Jakub Kicinski @ 2025-09-09 23:25 UTC (permalink / raw)
To: Nai-Chen(Simone) Cheng
Cc: David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Shuah Khan, netdev, linux-kselftest, linux-kernel,
linux-kernel-mentees
On Tue, 9 Sep 2025 18:00:17 +0800 Nai-Chen(Simone) Cheng wrote:
> Would it be acceptable to:
> 1. Send a v2 of this patch with the direct void casting approach and
> more precise commit message?
> 2. Send a separate patch to fix the selftests Makefile clean target to
> include $(INSTALL_DEPS_TARGET)?
Sounds good!
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] selftests/net: fix unused return value warnings in ksft.h
2025-09-09 23:25 ` Jakub Kicinski
@ 2025-09-10 11:16 ` Nai-Chen(Simone) Cheng
0 siblings, 0 replies; 5+ messages in thread
From: Nai-Chen(Simone) Cheng @ 2025-09-10 11:16 UTC (permalink / raw)
To: Jakub Kicinski
Cc: David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Shuah Khan, netdev, linux-kselftest, linux-kernel,
linux-kernel-mentees
Hi Jakub,
On 2025-09-10 07:25, Jakub Kicinski wrote:
> Sounds good!
I tried the direct void casting approach, but it still generates
warnings with GCC 14.2.0:
(void)write(fd, msg, sizeof(msg));
still shows: warning: ignoring return value of 'write'...
After further researching, I found this appears to be a known GCC/glibc
issue dating back to 2015 where direct void casting doesn't work for
functions with __warn_unused_result__. [1] Since this is a long-standing
toolchain issue and direct void casting won't suppress warning, I think
you can skip this patch. Thank you!
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425
Best Regards,
Nai-Chen Cheng
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-09-10 11:16 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-06 15:59 [PATCH] selftests/net: fix unused return value warnings in ksft.h Nai-Chen Cheng
2025-09-09 1:20 ` Jakub Kicinski
2025-09-09 10:00 ` Nai-Chen(Simone) Cheng
2025-09-09 23:25 ` Jakub Kicinski
2025-09-10 11:16 ` Nai-Chen(Simone) Cheng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).