summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net/ipv6/ip6_offload.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c
index 7540a0ed75ae..08861f1ff883 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;
}