IRe: [PATCH] vsprintf: flowinfo in IPv6 is optional too

From: Joe Perches
Date: Wed Feb 03 2016 - 12:56:46 EST


On Wed, 2016-02-03 at 13:13 +0100, Jason A. Donenfeld wrote:
> Signed-off-by: Jason A. Donenfeld <Jason@xxxxxxxxx>
> ---
>  lib/vsprintf.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/vsprintf.c b/lib/vsprintf.c
> index 1b1b1c8..85e6645 100644
> --- a/lib/vsprintf.c
> +++ b/lib/vsprintf.c
> @@ -1189,7 +1189,7 @@ char *ip6_addr_string_sa(char *buf, char *end, const struct sockaddr_in6 *sa,
>   *p++ = ':';
>   p = number(p, pend, ntohs(sa->sin6_port), spec);
>   }
> - if (have_f) {
> + if (have_f && (sa->sin6_flowinfo & IPV6_FLOWINFO_MASK)) {
>   *p++ = '/';
>   p = number(p, pend, ntohl(sa->sin6_flowinfo &
>     IPV6_FLOWINFO_MASK), spec);

Why does this matter at all?

The format string "%pIS[...]f" is not used currently in the kernel.

If one were to call out this 'f' qualifier to %pIS, wouldn't it
be better to show /0 than elide the / output completely?