diff options
Diffstat (limited to 'net/ipv4/udp.c')
| -rw-r--r-- | net/ipv4/udp.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index db76b9609299..08a41f1e1cd2 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -1857,8 +1857,12 @@ int __udp_disconnect(struct sock *sk, int flags)  	inet->inet_dport = 0;  	sock_rps_reset_rxhash(sk);  	sk->sk_bound_dev_if = 0; -	if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) +	if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) {  		inet_reset_saddr(sk); +		if (sk->sk_prot->rehash && +		    (sk->sk_userlocks & SOCK_BINDPORT_LOCK)) +			sk->sk_prot->rehash(sk); +	}  	if (!(sk->sk_userlocks & SOCK_BINDPORT_LOCK)) {  		sk->sk_prot->unhash(sk);  |