All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nick Desaulniers <ndesaulniers@google.com>
To: Justin Stitt <jstitt007@gmail.com>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>,
	Jozsef Kadlecsik <kadlec@netfilter.org>,
	 Florian Westphal <fw@strlen.de>,
	llvm@lists.linux.dev, Nathan Chancellor <nathan@kernel.org>
Subject: Re: [PATCH v2] netfilter: conntrack: Fix clang -Wformat warning in print_tuple()
Date: Tue, 7 Jun 2022 13:33:41 -0700	[thread overview]
Message-ID: <CAKwvOd=C2kyMVLYTKJcBQNnqK0T4nEBMeaS3DpTM2ez1P+qcqQ@mail.gmail.com> (raw)
In-Reply-To: <20220607180847.13482-1-jstitt007@gmail.com>

On Tue, Jun 7, 2022 at 11:09 AM Justin Stitt <jstitt007@gmail.com> wrote:
>
>  | net/netfilter/nf_conntrack_standalone.c:63:7: warning: format specifies type
>  | 'unsigned short' but the argument has type 'int' [-Wformat]
>  |                            ntohs(tuple->src.u.tcp.port),
>  |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  | net/netfilter/nf_conntrack_standalone.c:64:7: warning: format specifies type
>  | 'unsigned short' but the argument has type 'int' [-Wformat]
>  |                            ntohs(tuple->dst.u.tcp.port));
>  |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  | net/netfilter/nf_conntrack_standalone.c:69:7: warning: format specifies type
>  | 'unsigned short' but the argument has type 'int' [-Wformat]
>  |                            ntohs(tuple->src.u.udp.port),
>  |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  | net/netfilter/nf_conntrack_standalone.c:70:7: warning: format specifies type
>  | 'unsigned short' but the argument has type 'int' [-Wformat]
>  |                            ntohs(tuple->dst.u.udp.port));
>  |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  | net/netfilter/nf_conntrack_standalone.c:75:7: warning: format specifies type
>  | 'unsigned short' but the argument has type 'int' [-Wformat]
>  |                            ntohs(tuple->src.u.dccp.port),
>  |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  | net/netfilter/nf_conntrack_standalone.c:76:7: warning: format specifies type
>  | 'unsigned short' but the argument has type 'int' [-Wformat]
>  |                            ntohs(tuple->dst.u.dccp.port));
>  |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  | net/netfilter/nf_conntrack_standalone.c:80:7: warning: format specifies type
>  | 'unsigned short' but the argument has type 'int' [-Wformat]
>  |                            ntohs(tuple->src.u.sctp.port),
>  |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  | net/netfilter/nf_conntrack_standalone.c:81:7: warning: format specifies type
>  | 'unsigned short' but the argument has type 'int' [-Wformat]
>  |                            ntohs(tuple->dst.u.sctp.port));
>  |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Variadic functions (printf-like) undergo default argument promotion.
> Documentation/core-api/printk-formats.rst specifically recommends
> using the promoted-to-type's format flag.
>
> Also, as per C11 6.3.1.1:
> (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf)
> `If an int can represent all values of the original type ..., the
> value is converted to an int; otherwise, it is converted to an
> unsigned int. These are called the integer promotions.`
> Thus it makes sense to change %hu (as well as %u) to %d.
>
> It should be noted that %u does not produce the same warning as %hu in this
> context. However, it should probably be changed as well for consistency.

Right, because they are `unsigned char` and the parameter is unnamed
for variadic functions they are also default-argument-promoted to int.
-Wformat won't warn on signedness.

Thanks for the patch!

Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://github.com/ClangBuiltLinux/linux/issues/378

Also, Nathan supplied his RB tag on v1; it's ok next time to include
it on subsequent revisions of patches, so long as you don't change the
patch too much between revisions.

>
> Signed-off-by: Justin Stitt <jstitt007@gmail.com>
> ---
>  Diff between v1 -> v2:
>  * update commit message and subject line
>
>  Note: The architecture (arm64) is critical for reproducing this warning.
>
>  net/netfilter/nf_conntrack_standalone.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c
> index 6ad7bbc90d38..afbec8a12c5e 100644
> --- a/net/netfilter/nf_conntrack_standalone.c
> +++ b/net/netfilter/nf_conntrack_standalone.c
> @@ -53,30 +53,30 @@ print_tuple(struct seq_file *s, const struct nf_conntrack_tuple *tuple,
>
>         switch (l4proto->l4proto) {
>         case IPPROTO_ICMP:
> -               seq_printf(s, "type=%u code=%u id=%u ",
> +               seq_printf(s, "type=%d code=%d id=%d ",
>                            tuple->dst.u.icmp.type,
>                            tuple->dst.u.icmp.code,
>                            ntohs(tuple->src.u.icmp.id));
>                 break;
>         case IPPROTO_TCP:
> -               seq_printf(s, "sport=%hu dport=%hu ",
> +               seq_printf(s, "sport=%d dport=%d ",
>                            ntohs(tuple->src.u.tcp.port),
>                            ntohs(tuple->dst.u.tcp.port));
>                 break;
>         case IPPROTO_UDPLITE:
>         case IPPROTO_UDP:
> -               seq_printf(s, "sport=%hu dport=%hu ",
> +               seq_printf(s, "sport=%d dport=%d ",
>                            ntohs(tuple->src.u.udp.port),
>                            ntohs(tuple->dst.u.udp.port));
>
>                 break;
>         case IPPROTO_DCCP:
> -               seq_printf(s, "sport=%hu dport=%hu ",
> +               seq_printf(s, "sport=%d dport=%d ",
>                            ntohs(tuple->src.u.dccp.port),
>                            ntohs(tuple->dst.u.dccp.port));
>                 break;
>         case IPPROTO_SCTP:
> -               seq_printf(s, "sport=%hu dport=%hu ",
> +               seq_printf(s, "sport=%d dport=%d ",
>                            ntohs(tuple->src.u.sctp.port),
>                            ntohs(tuple->dst.u.sctp.port));
>                 break;
> --
> 2.30.2
>


-- 
Thanks,
~Nick Desaulniers

  reply	other threads:[~2022-06-07 20:33 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-06 21:28 [PATCH] netfilter: conntrack: fix this -Wformat clang warning: Justin Stitt
2022-06-07 15:27 ` Nathan Chancellor
2022-06-07 18:08   ` [PATCH v2] netfilter: conntrack: Fix clang -Wformat warning in print_tuple() Justin Stitt
2022-06-07 20:33     ` Nick Desaulniers [this message]
2022-06-07 20:36       ` Nick Desaulniers
2022-06-07 20:35     ` Nathan Chancellor
2022-06-07 20:29   ` [PATCH] netfilter: conntrack: fix this -Wformat clang warning: Nick Desaulniers
2022-06-07 20:46     ` Nathan Chancellor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAKwvOd=C2kyMVLYTKJcBQNnqK0T4nEBMeaS3DpTM2ez1P+qcqQ@mail.gmail.com' \
    --to=ndesaulniers@google.com \
    --cc=fw@strlen.de \
    --cc=jstitt007@gmail.com \
    --cc=kadlec@netfilter.org \
    --cc=llvm@lists.linux.dev \
    --cc=nathan@kernel.org \
    --cc=pablo@netfilter.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.