aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/tcp_ipv6.c
diff options
context:
space:
mode:
authorDaniel Lezcano <dlezcano@fr.ibm.com>2008-03-05 13:48:35 -0500
committerDavid S. Miller <davem@davemloft.net>2008-03-05 13:48:35 -0500
commitc20121ae87955cfc8b51f89072294fc6077f39ad (patch)
tree05f46eec2d1d3c472f1f980f8e38f8a00fb5140a /net/ipv6/tcp_ipv6.c
parent4591db4f37618f37a9f1f25d291c3c7a43a15a21 (diff)
[NETNS][IPV6] route6 - pass always a valid socket to ip6_dst_lookup
The ip6_dst_lookup receive a socket as parameter. In some part of the code it is called with a NULL socket parameter. We want to rely on the socket to retrieve the network namespace, so we always pass a valid socket in all cases. Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com> Signed-off-by: Benjamin Thery <benjamin.thery@bull.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
-rw-r--r--net/ipv6/tcp_ipv6.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index fd773ac7531a..aacbb7688bf9 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1071,8 +1071,11 @@ static void tcp_v6_send_reset(struct sock *sk, struct sk_buff *skb)
1071 fl.fl_ip_sport = t1->source; 1071 fl.fl_ip_sport = t1->source;
1072 security_skb_classify_flow(skb, &fl); 1072 security_skb_classify_flow(skb, &fl);
1073 1073
1074 /* sk = NULL, but it is safe for now. RST socket required. */ 1074 /* Pass a socket to ip6_dst_lookup either it is for RST
1075 if (!ip6_dst_lookup(NULL, &buff->dst, &fl)) { 1075 * Underlying function will use this to retrieve the network
1076 * namespace
1077 */
1078 if (!ip6_dst_lookup(tcp6_socket->sk, &buff->dst, &fl)) {
1076 1079
1077 if (xfrm_lookup(&buff->dst, &fl, NULL, 0) >= 0) { 1080 if (xfrm_lookup(&buff->dst, &fl, NULL, 0) >= 0) {
1078 ip6_xmit(tcp6_socket->sk, buff, &fl, NULL, 0); 1081 ip6_xmit(tcp6_socket->sk, buff, &fl, NULL, 0);
@@ -1172,7 +1175,7 @@ static void tcp_v6_send_ack(struct tcp_timewait_sock *tw,
1172 fl.fl_ip_sport = t1->source; 1175 fl.fl_ip_sport = t1->source;
1173 security_skb_classify_flow(skb, &fl); 1176 security_skb_classify_flow(skb, &fl);
1174 1177
1175 if (!ip6_dst_lookup(NULL, &buff->dst, &fl)) { 1178 if (!ip6_dst_lookup(tcp6_socket->sk, &buff->dst, &fl)) {
1176 if (xfrm_lookup(&buff->dst, &fl, NULL, 0) >= 0) { 1179 if (xfrm_lookup(&buff->dst, &fl, NULL, 0) >= 0) {
1177 ip6_xmit(tcp6_socket->sk, buff, &fl, NULL, 0); 1180 ip6_xmit(tcp6_socket->sk, buff, &fl, NULL, 0);
1178 TCP_INC_STATS_BH(TCP_MIB_OUTSEGS); 1181 TCP_INC_STATS_BH(TCP_MIB_OUTSEGS);