aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJerry Chu <hkchu@google.com>2013-12-15 18:48:07 -0800
committerDavid S. Miller <davem@davemloft.net>2013-12-15 23:55:04 -0500
commit810c23a3553cbb4602edf9534b548d2616ba5520 (patch)
tree30958f26a61670f5184897d5d7e4f3898c11f634 /net
parentMerge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc-next (diff)
downloadlinux-dev-810c23a3553cbb4602edf9534b548d2616ba5520.tar.xz
linux-dev-810c23a3553cbb4602edf9534b548d2616ba5520.zip
net-ipv6: Fix alleged compiler warning in ipv6_exthdrs_len()
It was reported that Commit 299603e8370a93dd5d8e8d800f0dff1ce2c53d36 ("net-gro: Prepare GRO stack for the upcoming tunneling support") triggered a compiler warning in ipv6_exthdrs_len(): 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-u opth = (void *)opth + optlen; ^ net/ipv6/ip6_offload.c:164:22: note: ‘optlen’ was declared here int len = 0, proto, optlen; ^ Note that there was no real bug here - optlen was never uninitialized before use. (Was the version of gcc I used smarter to not complain?) Reported-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: H.K. Jerry Chu <hkchu@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/ipv6/ip6_offload.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c
index 08861f1ff883..6fb4162fa785 100644
--- a/net/ipv6/ip6_offload.c
+++ b/net/ipv6/ip6_offload.c
@@ -160,8 +160,8 @@ out:
static int ipv6_exthdrs_len(struct ipv6hdr *iph,
const struct net_offload **opps)
{
- struct ipv6_opt_hdr *opth = NULL;
- int len = 0, optlen = 0, proto;
+ struct ipv6_opt_hdr *opth = (void *)iph;
+ int len = 0, proto, optlen = sizeof(*iph);
proto = iph->nexthdr;
for (;;) {
@@ -172,12 +172,8 @@ static int ipv6_exthdrs_len(struct ipv6hdr *iph,
if (!((*opps)->flags & INET6_PROTO_GSO_EXTHDR))
break;
}
- if (opth == NULL) {
- opth = (void *)(iph+1);
- } else {
- optlen = ipv6_optlen(opth);
- opth = (void *)opth + optlen;
- }
+ opth = (void *)opth + optlen;
+ optlen = ipv6_optlen(opth);
len += optlen;
proto = opth->nexthdr;
}