diff options
Diffstat (limited to 'net/dccp')
-rw-r--r-- | net/dccp/ipv6.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c index 64eac2515aa2..31737cdf156a 100644 --- a/net/dccp/ipv6.c +++ b/net/dccp/ipv6.c | |||
@@ -1043,9 +1043,13 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr, | |||
1043 | if (final_p) | 1043 | if (final_p) |
1044 | ipv6_addr_copy(&fl.fl6_dst, final_p); | 1044 | ipv6_addr_copy(&fl.fl6_dst, final_p); |
1045 | 1045 | ||
1046 | err = xfrm_lookup(&dst, &fl, sk, 1); | 1046 | err = __xfrm_lookup(&dst, &fl, sk, 1); |
1047 | if (err < 0) | 1047 | if (err < 0) { |
1048 | goto failure; | 1048 | if (err == -EREMOTE) |
1049 | err = ip6_dst_blackhole(sk, &dst, &fl); | ||
1050 | if (err < 0) | ||
1051 | goto failure; | ||
1052 | } | ||
1049 | 1053 | ||
1050 | if (saddr == NULL) { | 1054 | if (saddr == NULL) { |
1051 | saddr = &fl.fl6_src; | 1055 | saddr = &fl.fl6_src; |