summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
}