aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/tcp_ipv6.c
diff options
context:
space:
mode:
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);