diff options
author | Thomas Gleixner | 2013-01-31 22:17:10 +0100 |
---|---|---|
committer | Thomas Gleixner | 2013-01-31 22:17:10 +0100 |
commit | a9037430c6c784165a940a90bcd29f886834c8e7 (patch) | |
tree | 4b186e0a761e93a6c6712053d444b566c0d25338 /net/ipv6/ah6.c | |
parent | 6125bc8b86d9da75ddac77e38f41afbf9f5de3e3 (diff) | |
parent | 12ad10004645d38356b14d1fbba379c523a61916 (diff) |
Merge branch 'timers/for-arm' into timers/core
Diffstat (limited to 'net/ipv6/ah6.c')
-rw-r--r-- | net/ipv6/ah6.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/net/ipv6/ah6.c b/net/ipv6/ah6.c index ecc35b93314b..384233188ac1 100644 --- a/net/ipv6/ah6.c +++ b/net/ipv6/ah6.c @@ -472,7 +472,10 @@ static void ah6_input_done(struct crypto_async_request *base, int err) skb->network_header += ah_hlen; memcpy(skb_network_header(skb), work_iph, hdr_len); __skb_pull(skb, ah_hlen + hdr_len); - skb_set_transport_header(skb, -hdr_len); + if (x->props.mode == XFRM_MODE_TUNNEL) + skb_reset_transport_header(skb); + else + skb_set_transport_header(skb, -hdr_len); out: kfree(AH_SKB_CB(skb)->tmp); xfrm_input_resume(skb, err); @@ -593,9 +596,13 @@ static int ah6_input(struct xfrm_state *x, struct sk_buff *skb) skb->network_header += ah_hlen; memcpy(skb_network_header(skb), work_iph, hdr_len); - skb->transport_header = skb->network_header; __skb_pull(skb, ah_hlen + hdr_len); + if (x->props.mode == XFRM_MODE_TUNNEL) + skb_reset_transport_header(skb); + else + skb_set_transport_header(skb, -hdr_len); + err = nexthdr; out_free: |