Re: [PATCH] net/ipv6: warning: %u in format string (no. 2) requires 'unsigned int' but the argument type is 'signed int'.

From: Jakub Kicinski
Date: Sat Jan 09 2021 - 16:01:29 EST


On Thu, 7 Jan 2021 10:47:34 +0800 Jiapeng Zhong wrote:
> The print format of this parameter does not match, because it is defined
> as int type, so modify the matching format of this parameter to %d format.
>
> Signed-off-by: Jiapeng Zhong <abaci-bugfix@xxxxxxxxxxxxxxxxx>
> Reported-by: Abaci <abaci@xxxxxxxxxxxxxxxxx>
> ---
> net/ipv6/proc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c
> index d6306aa..26c702b 100644
> --- a/net/ipv6/proc.c
> +++ b/net/ipv6/proc.c
> @@ -169,7 +169,7 @@ static void snmp6_seq_show_icmpv6msg(struct seq_file *seq, atomic_long_t *smib)
> val = atomic_long_read(smib + i);
> if (!val)
> continue;
> - snprintf(name, sizeof(name), "Icmp6%sType%u",
> + snprintf(name, sizeof(name), "Icmp6%sType%d",
> i & 0x100 ? "Out" : "In", i & 0xff);
> seq_printf(seq, "%-32s\t%lu\n", name, val);
> }

Type can't be negative, there is no reason for @i to be signed.
Changing type of @i sounds like a better idea.