public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
* [PATCH v2 0/1] Some more static checker fixes
@ 2024-06-08  6:30 David Gibson
  2024-06-08  6:30 ` [PATCH v2 1/1] cppcheck: Suppress constParameterCallback errors David Gibson
  0 siblings, 1 reply; 2+ messages in thread
From: David Gibson @ 2024-06-08  6:30 UTC (permalink / raw)
  To: Stefano Brivio, passt-dev; +Cc: David Gibson

This series includes a number of fixes related to the static checkers:

 * Fedora 40 has updated to Cppcheck 2.14.1 which introduces some new
   warnings.  Fix them.

 * Jon's recent patch caused a small cppcheck regression.  I assume
   neither Jon nor Stefano is using sufficiently recent cppcheck
   versions to catch it.  Fix that too.

 * We were disabling the bugprone-macro parentheses check in
   clang-tidy.  I don't think that's a good idea.  Re-enable it and
   fix existing warnings.

 * It might also be a good idea to enable the
   bugprone-narrowing-conversions check.  Fix a number of issues
   across the tree which, amongst other things trigger that warning.
   There are lots of other places that trigger the warning which I
   haven't fixed yet, so don't enable it yet.

Changes since v2:
 * Rebased after most of the series was applied
 * Avoid triggering unmatchedSuppression on earlier cppcheck versions

David Gibson (1):
  cppcheck: Suppress constParameterCallback errors

 pasta.c      | 1 +
 tcp.c        | 1 +
 tcp_splice.c | 1 +
 3 files changed, 3 insertions(+)

-- 
2.45.2


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH v2 1/1] cppcheck: Suppress constParameterCallback errors
  2024-06-08  6:30 [PATCH v2 0/1] Some more static checker fixes David Gibson
@ 2024-06-08  6:30 ` David Gibson
  0 siblings, 0 replies; 2+ messages in thread
From: David Gibson @ 2024-06-08  6:30 UTC (permalink / raw)
  To: Stefano Brivio, passt-dev; +Cc: David Gibson

We have several functions which are used as callbacks for NS_CALL() which
only read their void * parameter, they don't write it.  The
constParameterCallback warning in cppcheck 2.14.1 complains that this
parameter could be const void *, also pointing out that that would require
casting the function pointer when used as a callback.

Casting the function pointers seems substantially uglier than using a
non-const void * as the parameter, especially since in each case we cast
the void * to a const pointer of specific type immediately.  So, suppress
these errors.

I think it would make logical sense to suppress this globally, but that
would cause unmatchedSuppression errors on earlier cppcheck versions.  So,
instead individually suppress it, along with unmatchedSuppression in the
relevant places.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 pasta.c      | 1 +
 tcp.c        | 1 +
 tcp_splice.c | 1 +
 3 files changed, 3 insertions(+)

diff --git a/pasta.c b/pasta.c
index 31e1e000..b85ea2b4 100644
--- a/pasta.c
+++ b/pasta.c
@@ -176,6 +176,7 @@ struct pasta_spawn_cmd_arg {
  *
  * Return: this function never returns
  */
+/* cppcheck-suppress [constParameterCallback, unmatchedSuppression] */
 static int pasta_spawn_cmd(void *arg)
 {
 	const struct pasta_spawn_cmd_arg *a;
diff --git a/tcp.c b/tcp.c
index cb613cf3..dd8d46e0 100644
--- a/tcp.c
+++ b/tcp.c
@@ -3079,6 +3079,7 @@ void tcp_ns_sock_init(const struct ctx *c, in_port_t port)
  *
  * Return: 0
  */
+/* cppcheck-suppress [constParameterCallback, unmatchedSuppression] */
 static int tcp_ns_socks_init(void *arg)
 {
 	const struct ctx *c = (const struct ctx *)arg;
diff --git a/tcp_splice.c b/tcp_splice.c
index 3f9d395a..5a406c63 100644
--- a/tcp_splice.c
+++ b/tcp_splice.c
@@ -736,6 +736,7 @@ static void tcp_splice_pipe_refill(const struct ctx *c)
  *
  * Return: 0
  */
+/* cppcheck-suppress [constParameterCallback, unmatchedSuppression] */
 static int tcp_sock_refill_ns(void *arg)
 {
 	const struct ctx *c = (const struct ctx *)arg;
-- 
@@ -736,6 +736,7 @@ static void tcp_splice_pipe_refill(const struct ctx *c)
  *
  * Return: 0
  */
+/* cppcheck-suppress [constParameterCallback, unmatchedSuppression] */
 static int tcp_sock_refill_ns(void *arg)
 {
 	const struct ctx *c = (const struct ctx *)arg;
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-06-08  6:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-08  6:30 [PATCH v2 0/1] Some more static checker fixes David Gibson
2024-06-08  6:30 ` [PATCH v2 1/1] cppcheck: Suppress constParameterCallback errors David Gibson

Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

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 IMAP folder(s).