Messages in this thread | | | Date | Thu, 7 Jul 2022 09:50:52 +0200 | From | Guillaume Nault <> | Subject | Re: [PATCH] net: l2tp: fix clang -Wformat warning |
| |
On Wed, Jul 06, 2022 at 04:08:33PM -0700, Justin Stitt wrote: > When building with clang we encounter this warning: > | net/l2tp/l2tp_ppp.c:1557:6: error: format specifies type 'unsigned > | short' but the argument has type 'u32' (aka 'unsigned int') > | [-Werror,-Wformat] session->nr, session->ns, > > Both session->nr and session->ns are of type u32. The format specifier > previously used is `%hu` which would truncate our unsigned integer from > 32 to 16 bits. This doesn't seem like intended behavior, if it is then > perhaps we need to consider suppressing the warning with pragma clauses.
pppol2tp_seq_session_show() is only called for L2TPv2 sessions, where ns and nr are 2 bytes long (L2TPv3 uses 3 bytes, hence the u32 type in the generic l2tp_session structure). So %hu shouldn't truncate anything here.
However %u doesn't harm and is cleaner than silencing the warning with pragma.
Acked-by: Guillaume Nault <gnault@redhat.com>
> This patch should get us closer to the goal of enabling the -Wformat > flag for Clang builds. > > Link: https://github.com/ClangBuiltLinux/linux/issues/378 > Signed-off-by: Justin Stitt <justinstitt@google.com> > --- > net/l2tp/l2tp_ppp.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c > index 8be1fdc68a0b..db2e584c625e 100644 > --- a/net/l2tp/l2tp_ppp.c > +++ b/net/l2tp/l2tp_ppp.c > @@ -1553,7 +1553,7 @@ static void pppol2tp_seq_session_show(struct seq_file *m, void *v) > session->lns_mode ? "LNS" : "LAC", > 0, > jiffies_to_msecs(session->reorder_timeout)); > - seq_printf(m, " %hu/%hu %ld/%ld/%ld %ld/%ld/%ld\n", > + seq_printf(m, " %u/%u %ld/%ld/%ld %ld/%ld/%ld\n", > session->nr, session->ns, > atomic_long_read(&session->stats.tx_packets), > atomic_long_read(&session->stats.tx_bytes), > -- > 2.37.0.rc0.161.g10f37bed90-goog >
| |