2016-04-04 18:15:22

by Jeff Mahoney

[permalink] [raw]
Subject: [PATCH] mac80211: fix "warning: ‘target_metric’ may be used uninitialized"

This fixes:

net/mac80211/mesh_hwmp.c:603:26: warning: ‘target_metric’ may be used
uninitialized in this function

target_metric is only consumed when reply = true so no bug exists here,
but gcc doesn't notice that. Initializing to 0 clears the warning.

Signed-off-by: Jeff Mahoney <[email protected]>
---

net/mac80211/mesh_hwmp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/net/mac80211/mesh_hwmp.c
+++ b/net/mac80211/mesh_hwmp.c
@@ -530,7 +530,7 @@ static void hwmp_preq_frame_process(stru
const u8 *target_addr, *orig_addr;
const u8 *da;
u8 target_flags, ttl, flags;
- u32 orig_sn, target_sn, lifetime, target_metric;
+ u32 orig_sn, target_sn, lifetime, target_metric = 0;
bool reply = false;
bool forward = true;
bool root_is_gate;

--
Jeff Mahoney
SUSE Labs


2016-04-05 13:33:32

by Jeff Mahoney

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix "warning: ‘target_metric’ may be used uninitialized"

On 4/5/16 5:43 AM, Johannes Berg wrote:
> On Mon, 2016-04-04 at 14:15 -0400, Jeff Mahoney wrote:
>> This fixes:
>>
>> net/mac80211/mesh_hwmp.c:603:26: warning: ‘target_metric’ may be used
>> uninitialized in this function
>>
>> target_metric is only consumed when reply = true so no bug exists
>> here,
>> but gcc doesn't notice that. Initializing to 0 clears the warning.
>>
>
> What gcc version are you using? Mine doesn't seem to have a problem
> following the logic here.

gcc version 4.8.5 (SUSE Linux)

-Jeff

--
Jeff Mahoney
SUSE Labs


Attachments:
signature.asc (881.00 B)
OpenPGP digital signature

2016-04-05 13:47:13

by Jeff Mahoney

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix "warning: ‘target_metric’ may be used uninitialized"

On 4/5/16 9:40 AM, Johannes Berg wrote:
> On Tue, 2016-04-05 at 09:33 -0400, Jeff Mahoney wrote:
>> On 4/5/16 5:43 AM, Johannes Berg wrote:
>>>
>>> On Mon, 2016-04-04 at 14:15 -0400, Jeff Mahoney wrote:
>>>>
>>>> This fixes:
>>>>
>>>> net/mac80211/mesh_hwmp.c:603:26: warning: ‘target_metric’ may be
>>>> used
>>>> uninitialized in this function
>>>>
>>>> target_metric is only consumed when reply = true so no bug exists
>>>> here,
>>>> but gcc doesn't notice that. Initializing to 0 clears the
>>>> warning.
>>>>
>>> What gcc version are you using? Mine doesn't seem to have a problem
>>> following the logic here.
>> gcc version 4.8.5 (SUSE Linux)
>
> Ok, mine's significantly newer:
>
> gcc (Debian 5.3.1-10) 5.3.1 20160224
>
> I do wonder though if we really should do this? It might hide errors
> later on?

AFAICT, the only way errors would be introduced is if someone added a
new case in which reply was true *and* needed a different target_metric
value (there are 3 cases it's used, 2 of which use 0). Or if there was
a new case where the target_metric was used and reply wasn't true -- in
which case this code would have been broken anyway.

Also, using uninitalized_var would have a higher probability of hiding
an error later on. Setting it to 0 seems the safest course.

-Jeff

--
Jeff Mahoney
SUSE Labs


Attachments:
signature.asc (881.00 B)
OpenPGP digital signature

2016-04-05 13:40:25

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix "warning: ‘target_metric’ may be used uninitialized"

On Tue, 2016-04-05 at 09:33 -0400, Jeff Mahoney wrote:
> On 4/5/16 5:43 AM, Johannes Berg wrote:
> >
> > On Mon, 2016-04-04 at 14:15 -0400, Jeff Mahoney wrote:
> > >
> > > This fixes:
> > >
> > > net/mac80211/mesh_hwmp.c:603:26: warning: ‘target_metric’ may be
> > > used
> > > uninitialized in this function
> > >
> > > target_metric is only consumed when reply = true so no bug exists
> > > here,
> > > but gcc doesn't notice that.  Initializing to 0 clears the
> > > warning.
> > >
> > What gcc version are you using? Mine doesn't seem to have a problem
> > following the logic here.
> gcc version 4.8.5 (SUSE Linux)

Ok, mine's significantly newer:

gcc (Debian 5.3.1-10) 5.3.1 20160224

I do wonder though if we really should do this? It might hide errors
later on?

johannes

2016-04-05 09:43:13

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix "warning: ‘target_metric’ may be used uninitialized"

On Mon, 2016-04-04 at 14:15 -0400, Jeff Mahoney wrote:
> This fixes:
>
> net/mac80211/mesh_hwmp.c:603:26: warning: ‘target_metric’ may be used
> uninitialized in this function
>
> target_metric is only consumed when reply = true so no bug exists
> here,
> but gcc doesn't notice that.  Initializing to 0 clears the warning.
>

What gcc version are you using? Mine doesn't seem to have a problem
following the logic here.

johannes

2016-04-06 13:14:49

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix "warning: ‘target_metric’ may be used uninitialized"

On Mon, 2016-04-04 at 14:15 -0400, Jeff Mahoney wrote:
> This fixes:
>
> net/mac80211/mesh_hwmp.c:603:26: warning: ‘target_metric’ may be used
> uninitialized in this function
>
> target_metric is only consumed when reply = true so no bug exists
> here,
> but gcc doesn't notice that.  Initializing to 0 clears the warning.
>

Applied.

johannes