net: ipv6: reset daddr and dport in sk if connect() fails
[sfrench/cifs-2.6.git] / net / ipv6 / datagram.c
index e011122ebd43c190aec3812099345ec852444284..5c786f5ab961c5230ce325eebd465dcc5da93904 100644 (file)
@@ -250,8 +250,14 @@ ipv4_connected:
         */
 
        err = ip6_datagram_dst_update(sk, true);
-       if (err)
+       if (err) {
+               /* Reset daddr and dport so that udp_v6_early_demux()
+                * fails to find this socket
+                */
+               memset(&sk->sk_v6_daddr, 0, sizeof(sk->sk_v6_daddr));
+               inet->inet_dport = 0;
                goto out;
+       }
 
        sk->sk_state = TCP_ESTABLISHED;
        sk_set_txhash(sk);