summaryrefslogtreecommitdiff
path: root/net/ipv6
diff options
context:
space:
mode:
authorAlexey Dobriyan <adobriyan@gmail.com>2008-10-08 11:35:03 +0200
committerPatrick McHardy <kaber@trash.net>2008-10-08 11:35:03 +0200
commitb21f89019399ff75d9c239010e38b840eb6e01e7 (patch)
treef4b2ef9f75e2330b983ba27515a5687f8e923e24 /net/ipv6
parent400dad39d1c33fe797e47326d87a3f54d0ac5181 (diff)
downloadkernel-common-b21f89019399ff75d9c239010e38b840eb6e01e7.tar.gz
kernel-common-b21f89019399ff75d9c239010e38b840eb6e01e7.tar.bz2
kernel-common-b21f89019399ff75d9c239010e38b840eb6e01e7.zip
netfilter: netns: fix {ip,6}_route_me_harder() in netns
Take netns from skb->dst->dev. It should be safe because, they are called from LOCAL_OUT hook where dst is valid (though, I'm not exactly sure about IPVS and queueing packets to userspace). [Patrick: its safe everywhere since they already expect skb->dst to be set] Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/netfilter.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv6/netfilter.c b/net/ipv6/netfilter.c
index 8c6c5e71f210..4cb4844a3220 100644
--- a/net/ipv6/netfilter.c
+++ b/net/ipv6/netfilter.c
@@ -23,7 +23,7 @@ int ip6_route_me_harder(struct sk_buff *skb)
.saddr = iph->saddr, } },
};
- dst = ip6_route_output(&init_net, skb->sk, &fl);
+ dst = ip6_route_output(dev_net(skb->dst->dev), skb->sk, &fl);
#ifdef CONFIG_XFRM
if (!(IP6CB(skb)->flags & IP6SKB_XFRM_TRANSFORMED) &&