Message ID | 20131214062929.GA23563@order.stressinduktion.org |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Hannes Frederic Sowa <hannes@stressinduktion.org> Date: Sat, 14 Dec 2013 07:29:29 +0100 > Commit 299603e8370a93dd5d8e8d800f0dff1ce2c53d36 ("net-gro: Prepare GRO > stack for the upcoming tunneling support") used an uninitialized variable > which leads to the following compiler warning: > > net/ipv6/ip6_offload.c: In function ‘ipv6_gro_complete’: > net/ipv6/ip6_offload.c:178:24: warning: ‘optlen’ may be used uninitialized in this function [-Wmaybe-uninitialized] > opth = (void *)opth + optlen; > ^ > net/ipv6/ip6_offload.c:164:22: note: ‘optlen’ was declared here > int len = 0, proto, optlen; > ^ > Fix it up. > > Cc: Jerry Chu <hkchu@google.com> > Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Applied.
On Sat, Dec 14, 2013 at 3:02 PM, David Miller <davem@davemloft.net> wrote: > From: Hannes Frederic Sowa <hannes@stressinduktion.org> > Date: Sat, 14 Dec 2013 07:29:29 +0100 > >> Commit 299603e8370a93dd5d8e8d800f0dff1ce2c53d36 ("net-gro: Prepare GRO >> stack for the upcoming tunneling support") used an uninitialized variable >> which leads to the following compiler warning: >> >> net/ipv6/ip6_offload.c: In function ‘ipv6_gro_complete’: >> net/ipv6/ip6_offload.c:178:24: warning: ‘optlen’ may be used uninitialized in this function [-Wmaybe-uninitialized] >> opth = (void *)opth + optlen; >> ^ >> net/ipv6/ip6_offload.c:164:22: note: ‘optlen’ was declared here >> int len = 0, proto, optlen; >> ^ >> Fix it up. >> >> Cc: Jerry Chu <hkchu@google.com> >> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> > > Applied. Please back out the above "fix" - it actually breaks the original code because the fix will cause exthdrs_len to be one optlen short. There was no bug in the original code, just the compiler warning (and I do not get any warning, although I admit I did not run with the -W flag). In any case I will submit a revision shortly that will silent any warning if exists. Jerry -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c index 7540a0e..08861f1 100644 --- a/net/ipv6/ip6_offload.c +++ b/net/ipv6/ip6_offload.c @@ -161,7 +161,7 @@ static int ipv6_exthdrs_len(struct ipv6hdr *iph, const struct net_offload **opps) { struct ipv6_opt_hdr *opth = NULL; - int len = 0, proto, optlen; + int len = 0, optlen = 0, proto; proto = iph->nexthdr; for (;;) { @@ -172,11 +172,12 @@ static int ipv6_exthdrs_len(struct ipv6hdr *iph, if (!((*opps)->flags & INET6_PROTO_GSO_EXTHDR)) break; } - if (opth == NULL) + if (opth == NULL) { opth = (void *)(iph+1); - else + } else { + optlen = ipv6_optlen(opth); opth = (void *)opth + optlen; - optlen = ipv6_optlen(opth); + } len += optlen; proto = opth->nexthdr; }
Commit 299603e8370a93dd5d8e8d800f0dff1ce2c53d36 ("net-gro: Prepare GRO stack for the upcoming tunneling support") used an uninitialized variable which leads to the following compiler warning: net/ipv6/ip6_offload.c: In function ‘ipv6_gro_complete’: net/ipv6/ip6_offload.c:178:24: warning: ‘optlen’ may be used uninitialized in this function [-Wmaybe-uninitialized] opth = (void *)opth + optlen; ^ net/ipv6/ip6_offload.c:164:22: note: ‘optlen’ was declared here int len = 0, proto, optlen; ^ Fix it up. Cc: Jerry Chu <hkchu@google.com> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> --- I just noticed this and tried to fix it. Jerry, could you please review? I hope I got it right. ;) net/ipv6/ip6_offload.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)