Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1471090 > unrolled thread

[PATCH] bridge: Fix format string for %ul

Started byOleg Drokin <green@linuxhacker.ru>
First post2016-08-27 05:20 +0200
Last post2016-08-27 18:40 +0200
Articles 5 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] bridge: Fix format string for %ul Oleg Drokin <green@linuxhacker.ru> - 2016-08-27 05:20 +0200
    Re: [PATCH] bridge: Fix format string for %ul Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> - 2016-08-27 17:20 +0200
      Re: [PATCH] bridge: Fix format string for %ul Oleg Drokin <green@linuxhacker.ru> - 2016-08-27 18:00 +0200
        Re: [PATCH] bridge: Fix format string for %ul Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> - 2016-08-27 18:20 +0200
          Re: [PATCH] bridge: Fix format string for %ul Oleg Drokin <green@linuxhacker.ru> - 2016-08-27 18:40 +0200

#1471090 — [PATCH] bridge: Fix format string for %ul

FromOleg Drokin <green@linuxhacker.ru>
Date2016-08-27 05:20 +0200
Subject[PATCH] bridge: Fix format string for %ul
Message-ID<saCk2-7AH-11@gated-at.bofh.it>
%ul would print an unsigned value and a letter l,
likely it was %lu that was meant to print the long int,
but in reality the values printed there are just regular signed
ints, so just dropping the l altogether.

Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
---
 net/bridge/br_stp_bpdu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/bridge/br_stp_bpdu.c b/net/bridge/br_stp_bpdu.c
index 5881fbc..15c4a9c 100644
--- a/net/bridge/br_stp_bpdu.c
+++ b/net/bridge/br_stp_bpdu.c
@@ -230,7 +230,7 @@ void br_stp_rcv(const struct stp_proto *proto, struct sk_buff *skb,
 			if (net_ratelimit())
 				br_notice(p->br,
 					  "port %u config from %pM"
-					  " (message_age %ul > max_age %ul)\n",
+					  " (message_age %u > max_age %u)\n",
 					  p->port_no,
 					  eth_hdr(skb)->h_source,
 					  bpdu.message_age, bpdu.max_age);
-- 
2.7.4

[toc] | [next] | [standalone]


#1471199

FromSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date2016-08-27 17:20 +0200
Message-ID<saNyO-6aa-13@gated-at.bofh.it>
In reply to#1471090
Hello.

On 8/27/2016 6:10 AM, Oleg Drokin wrote:

> %ul would print an unsigned value and a letter l,
> likely it was %lu that was meant to print the long int,
> but in reality the values printed there are just regular signed

    Signed? Then you need probably "%d" or "%i"...

> ints, so just dropping the l altogether.
>
> Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
[...]

MBR, Sergei

[toc] | [prev] | [next] | [standalone]


#1471212

FromOleg Drokin <green@linuxhacker.ru>
Date2016-08-27 18:00 +0200
Message-ID<saObv-6nq-7@gated-at.bofh.it>
In reply to#1471199
On Aug 27, 2016, at 11:13 AM, Sergei Shtylyov wrote:

> Hello.
> 
> On 8/27/2016 6:10 AM, Oleg Drokin wrote:
> 
>> %ul would print an unsigned value and a letter l,
>> likely it was %lu that was meant to print the long int,
>> but in reality the values printed there are just regular signed
> 
>   Signed? Then you need probably "%d" or "%i"…

They are signed in the struct definition, but in reality they
designate time, so could not be negative, I imagine?

> 
>> ints, so just dropping the l altogether.
>> 
>> Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
> [...]
> 
> MBR, Sergei

[toc] | [prev] | [next] | [standalone]


#1471218

FromSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date2016-08-27 18:20 +0200
Message-ID<saOuS-6JU-5@gated-at.bofh.it>
In reply to#1471212
Hello.

On 8/27/2016 6:58 PM, Oleg Drokin wrote:

>>> %ul would print an unsigned value and a letter l,
>>> likely it was %lu that was meant to print the long int,
>>> but in reality the values printed there are just regular signed
>>
>>   Signed? Then you need probably "%d" or "%i"…
>
> They are signed in the struct definition, but in reality they
> designate time, so could not be negative, I imagine?

    That doesn't matter. If the type is signed, it should be printed as signed.
Doesn't gcc complain about the format specifiers not matching the values passed?

>>> ints, so just dropping the l altogether.
>>>
>>> Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
>> [...]

MBR, Sergei

[toc] | [prev] | [next] | [standalone]


#1471223

FromOleg Drokin <green@linuxhacker.ru>
Date2016-08-27 18:40 +0200
Message-ID<saOOd-6RJ-3@gated-at.bofh.it>
In reply to#1471218
On Aug 27, 2016, at 12:18 PM, Sergei Shtylyov wrote:

> Hello.
> 
> On 8/27/2016 6:58 PM, Oleg Drokin wrote:
> 
>>>> %ul would print an unsigned value and a letter l,
>>>> likely it was %lu that was meant to print the long int,
>>>> but in reality the values printed there are just regular signed
>>> 
>>>  Signed? Then you need probably "%d" or "%i"…
>> 
>> They are signed in the struct definition, but in reality they
>> designate time, so could not be negative, I imagine?
> 
>   That doesn't matter. If the type is signed, it should be printed as signed.
> Doesn't gcc complain about the format specifiers not matching the values passed?

only if the size differs.

I don't care either way.
I can change the struct to unsigned too, but if we want super correctness,
the problem lies deeper.

E.g. if we look how those times are derived, the age comes as:
static inline int br_get_ticks(const unsigned char *src)
{
        unsigned long ticks = get_unaligned_be16(src);

        return DIV_ROUND_UP(ticks * HZ, STP_HZ);
}

So we divide unsigned value by positive value and get a signed result ;)

there's a struct net_bridge_port with similar members in this are that are
unsigned long, so I guess we should convert to unsigned long in the
struct br_config_bpdu, do you want a patch for that separately or as part of this one?

> 
>>>> ints, so just dropping the l altogether.
>>>> 
>>>> Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
>>> [...]
> 
> MBR, Sergei

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web