GCC 13.2.0 reported warning about (void *) beeing used as a param where (char *) is expected:
In file included from msg_oob.c:14: msg_oob.c: In function ‘__recvpair’: ../../kselftest_harness.h:106:40: warning: format ‘%s’ expects argument of type ‘char *’, but argument 6 has type ‘const void *’ [-Wformat=] 106 | fprintf(TH_LOG_STREAM, "# %s:%d:%s:" fmt "\n", \ | ^~~~~~~~~~~~~ ../../kselftest_harness.h:101:17: note: in expansion of macro ‘__TH_LOG’ 101 | __TH_LOG(fmt, ##__VA_ARGS__); \ | ^~~~~~~~ msg_oob.c:235:17: note: in expansion of macro ‘TH_LOG’ 235 | TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : expected_buf); | ^~~~~~ ../../kselftest_harness.h:106:40: warning: format ‘%s’ expects argument of type ‘char *’, but argument 6 has type ‘const void *’ [-Wformat=] 106 | fprintf(TH_LOG_STREAM, "# %s:%d:%s:" fmt "\n", \ | ^~~~~~~~~~~~~ ../../kselftest_harness.h:101:17: note: in expansion of macro ‘__TH_LOG’ 101 | __TH_LOG(fmt, ##__VA_ARGS__); \ | ^~~~~~~~ msg_oob.c:259:25: note: in expansion of macro ‘TH_LOG’ 259 | TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : expected_buf); | ^~~~~~
Casting param to (char *) silences the warning.
Fixes: d098d77232c37 ("selftest: af_unix: Add msg_oob.c.") Cc: "David S. Miller" davem@davemloft.net Cc: Eric Dumazet edumazet@google.com Cc: Jakub Kicinski kuba@kernel.org Cc: Paolo Abeni pabeni@redhat.com Cc: Shuah Khan shuah@kernel.org Cc: Kuniyuki Iwashima kuniyu@amazon.com Cc: netdev@vger.kernel.org Cc: linux-kselftest@vger.kernel.org Signed-off-by: Mirsad Todorovac mtodorovac69@gmail.com --- v1: initial version to fix the compiler warning.
tools/testing/selftests/net/af_unix/msg_oob.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/net/af_unix/msg_oob.c b/tools/testing/selftests/net/af_unix/msg_oob.c index 16d0c172eaeb..ae2623eea8ae 100644 --- a/tools/testing/selftests/net/af_unix/msg_oob.c +++ b/tools/testing/selftests/net/af_unix/msg_oob.c @@ -232,7 +232,7 @@ static void __recvpair(struct __test_metadata *_metadata,
if (ret[0] != expected_len || recv_errno[0] != expected_errno) { TH_LOG("AF_UNIX :%s", ret[0] < 0 ? strerror(recv_errno[0]) : recv_buf[0]); - TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : expected_buf); + TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : (char *)expected_buf);
ASSERT_EQ(ret[0], expected_len); ASSERT_EQ(recv_errno[0], expected_errno); @@ -256,7 +256,7 @@ static void __recvpair(struct __test_metadata *_metadata, cmp = strncmp(expected_buf, recv_buf[0], expected_len); if (cmp) { TH_LOG("AF_UNIX :%s", ret[0] < 0 ? strerror(recv_errno[0]) : recv_buf[0]); - TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : expected_buf); + TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : (char *)expected_buf);
ASSERT_EQ(cmp, 0); }
On Mon, Aug 12, 2024 at 02:22:58AM +0200, Mirsad Todorovac wrote:
GCC 13.2.0 reported warning about (void *) beeing used as a param where (char *) is expected:
nit: being
In file included from msg_oob.c:14: msg_oob.c: In function ‘__recvpair’: ../../kselftest_harness.h:106:40: warning: format ‘%s’ expects argument of type ‘char *’, but argument 6 has type ‘const void *’ [-Wformat=] 106 | fprintf(TH_LOG_STREAM, "# %s:%d:%s:" fmt "\n", \ | ^~~~~~~~~~~~~ ../../kselftest_harness.h:101:17: note: in expansion of macro ‘__TH_LOG’ 101 | __TH_LOG(fmt, ##__VA_ARGS__); \ | ^~~~~~~~ msg_oob.c:235:17: note: in expansion of macro ‘TH_LOG’ 235 | TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : expected_buf); | ^~~~~~ ../../kselftest_harness.h:106:40: warning: format ‘%s’ expects argument of type ‘char *’, but argument 6 has type ‘const void *’ [-Wformat=] 106 | fprintf(TH_LOG_STREAM, "# %s:%d:%s:" fmt "\n", \ | ^~~~~~~~~~~~~ ../../kselftest_harness.h:101:17: note: in expansion of macro ‘__TH_LOG’ 101 | __TH_LOG(fmt, ##__VA_ARGS__); \ | ^~~~~~~~ msg_oob.c:259:25: note: in expansion of macro ‘TH_LOG’ 259 | TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : expected_buf); | ^~~~~~
Thanks, I see this too.
Casting param to (char *) silences the warning.
It seems that all callers pass a string as the expected_errno argument. Perhaps it's type could be updated to char *, if that is what it is. I think this would avoid the need to cast.
Fixes: d098d77232c37 ("selftest: af_unix: Add msg_oob.c.") Cc: "David S. Miller" davem@davemloft.net Cc: Eric Dumazet edumazet@google.com Cc: Jakub Kicinski kuba@kernel.org Cc: Paolo Abeni pabeni@redhat.com Cc: Shuah Khan shuah@kernel.org Cc: Kuniyuki Iwashima kuniyu@amazon.com Cc: netdev@vger.kernel.org Cc: linux-kselftest@vger.kernel.org Signed-off-by: Mirsad Todorovac mtodorovac69@gmail.com
...
Hi, Simon,
On 8/12/24 17:17, Simon Horman wrote:
On Mon, Aug 12, 2024 at 02:22:58AM +0200, Mirsad Todorovac wrote:
GCC 13.2.0 reported warning about (void *) beeing used as a param where (char *) is expected:
nit: being
Ouch! No patch is small enough that one should take its correctness for granted. :-O
In file included from msg_oob.c:14: msg_oob.c: In function ‘__recvpair’: ../../kselftest_harness.h:106:40: warning: format ‘%s’ expects argument of type ‘char *’, but argument 6 has type ‘const void *’ [-Wformat=] 106 | fprintf(TH_LOG_STREAM, "# %s:%d:%s:" fmt "\n", \ | ^~~~~~~~~~~~~ ../../kselftest_harness.h:101:17: note: in expansion of macro ‘__TH_LOG’ 101 | __TH_LOG(fmt, ##__VA_ARGS__); \ | ^~~~~~~~ msg_oob.c:235:17: note: in expansion of macro ‘TH_LOG’ 235 | TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : expected_buf); | ^~~~~~ ../../kselftest_harness.h:106:40: warning: format ‘%s’ expects argument of type ‘char *’, but argument 6 has type ‘const void *’ [-Wformat=] 106 | fprintf(TH_LOG_STREAM, "# %s:%d:%s:" fmt "\n", \ | ^~~~~~~~~~~~~ ../../kselftest_harness.h:101:17: note: in expansion of macro ‘__TH_LOG’ 101 | __TH_LOG(fmt, ##__VA_ARGS__); \ | ^~~~~~~~ msg_oob.c:259:25: note: in expansion of macro ‘TH_LOG’ 259 | TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : expected_buf); | ^~~~~~
Thanks, I see this too.
Casting param to (char *) silences the warning.
It seems that all callers pass a string as the expected_errno argument. Perhaps it's type could be updated to char *, if that is what it is. I think this would avoid the need to cast.
Agreed and verified. If it is OK with you, I might post a v2.
Best regards, Mirsad Todorovac
Fixes: d098d77232c37 ("selftest: af_unix: Add msg_oob.c.") Cc: "David S. Miller" davem@davemloft.net Cc: Eric Dumazet edumazet@google.com Cc: Jakub Kicinski kuba@kernel.org Cc: Paolo Abeni pabeni@redhat.com Cc: Shuah Khan shuah@kernel.org Cc: Kuniyuki Iwashima kuniyu@amazon.com Cc: netdev@vger.kernel.org Cc: linux-kselftest@vger.kernel.org Signed-off-by: Mirsad Todorovac mtodorovac69@gmail.com
...
From: Mirsad Todorovac mtodorovac69@gmail.com Date: Mon, 12 Aug 2024 02:22:58 +0200
GCC 13.2.0 reported warning about (void *) beeing used as a param where (char *) is expected:
In file included from msg_oob.c:14: msg_oob.c: In function ‘__recvpair’: ../../kselftest_harness.h:106:40: warning: format ‘%s’ expects argument of type ‘char *’, but argument 6 has type ‘const void *’ [-Wformat=] 106 | fprintf(TH_LOG_STREAM, "# %s:%d:%s:" fmt "\n", \ | ^~~~~~~~~~~~~ ../../kselftest_harness.h:101:17: note: in expansion of macro ‘__TH_LOG’ 101 | __TH_LOG(fmt, ##__VA_ARGS__); \ | ^~~~~~~~ msg_oob.c:235:17: note: in expansion of macro ‘TH_LOG’ 235 | TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : expected_buf); | ^~~~~~ ../../kselftest_harness.h:106:40: warning: format ‘%s’ expects argument of type ‘char *’, but argument 6 has type ‘const void *’ [-Wformat=] 106 | fprintf(TH_LOG_STREAM, "# %s:%d:%s:" fmt "\n", \ | ^~~~~~~~~~~~~ ../../kselftest_harness.h:101:17: note: in expansion of macro ‘__TH_LOG’ 101 | __TH_LOG(fmt, ##__VA_ARGS__); \ | ^~~~~~~~ msg_oob.c:259:25: note: in expansion of macro ‘TH_LOG’ 259 | TH_LOG("Expected:%s", expected_errno ? strerror(expected_errno) : expected_buf); | ^~~~~~
Casting param to (char *) silences the warning.
Fixes: d098d77232c37 ("selftest: af_unix: Add msg_oob.c.") Cc: "David S. Miller" davem@davemloft.net Cc: Eric Dumazet edumazet@google.com Cc: Jakub Kicinski kuba@kernel.org Cc: Paolo Abeni pabeni@redhat.com Cc: Shuah Khan shuah@kernel.org Cc: Kuniyuki Iwashima kuniyu@amazon.com Cc: netdev@vger.kernel.org Cc: linux-kselftest@vger.kernel.org Signed-off-by: Mirsad Todorovac mtodorovac69@gmail.com
Thanks for the patch!
but I found the same patch posted a bit earlier here, and Abhinav will post v2.
https://lore.kernel.org/netdev/20240810134037.669765-1-jain.abhinav177@gmail...
linux-kselftest-mirror@lists.linaro.org