diff options
author | Hajime Tazaki <tazaki@sfc.wide.ad.jp> | 2015-02-04 23:31:10 +0900 |
---|---|---|
committer | Steffen Klassert <steffen.klassert@secunet.com> | 2015-02-06 07:00:32 +0100 |
commit | cd3bafc73d11eb51cb2d3691629718431e1768ce (patch) | |
tree | bad15e2457bb2da9d4e465a74e35b9aca7488f6b /net | |
parent | 59343cd7c4809cf7598789e1cd14563780ae4239 (diff) | |
download | op-kernel-dev-cd3bafc73d11eb51cb2d3691629718431e1768ce.zip op-kernel-dev-cd3bafc73d11eb51cb2d3691629718431e1768ce.tar.gz |
xfrm6: Fix a offset value for network header in _decode_session6
When a network-layer header has multiple IPv6 extension headers, then offset
for mobility header goes wrong. This regression breaks an xfrm policy lookup
for a particular receive packet. Binding update packets of Mobile IPv6
are all discarded without this fix.
Fixes: de3b7a06dfe1 ("xfrm6: Fix transport header offset in _decode_session6.")
Signed-off-by: Hajime Tazaki <tazaki@sfc.wide.ad.jp>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv6/xfrm6_policy.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c index 48bf5a0..8d2d01b 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c @@ -200,6 +200,7 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse) #if IS_ENABLED(CONFIG_IPV6_MIP6) case IPPROTO_MH: + offset += ipv6_optlen(exthdr); if (!onlyproto && pskb_may_pull(skb, nh + offset + 3 - skb->data)) { struct ip6_mh *mh; |