diff options
author | Peter Kosyh <p.kosyh@gmail.com> | 2010-07-02 09:47:55 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-07-04 20:46:07 +0200 |
commit | 44b451f1633896de15d2d52e1a2bd462e80b7814 (patch) | |
tree | 14596f22d672a9b34e017422f772c2a0b967f2f1 /net/ipv6/xfrm6_policy.c | |
parent | Merge branch 'vhost-net' of git://git.kernel.org/pub/scm/linux/kernel/git/mst... (diff) | |
download | linux-44b451f1633896de15d2d52e1a2bd462e80b7814.tar.xz linux-44b451f1633896de15d2d52e1a2bd462e80b7814.zip |
xfrm: fix xfrm by MARK logic
While using xfrm by MARK feature in
2.6.34 - 2.6.35 kernels, the mark
is always cleared in flowi structure via memset in
_decode_session4 (net/ipv4/xfrm4_policy.c), so
the policy lookup fails.
IPv6 code is affected by this bug too.
Signed-off-by: Peter Kosyh <p.kosyh@gmail.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/xfrm6_policy.c')
-rw-r--r-- | net/ipv6/xfrm6_policy.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c index 4a0e77e14468..6baeabbbca82 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c @@ -124,6 +124,8 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl, int reverse) u8 nexthdr = nh[IP6CB(skb)->nhoff]; memset(fl, 0, sizeof(struct flowi)); + fl->mark = skb->mark; + ipv6_addr_copy(&fl->fl6_dst, reverse ? &hdr->saddr : &hdr->daddr); ipv6_addr_copy(&fl->fl6_src, reverse ? &hdr->daddr : &hdr->saddr); |