diff options
Diffstat (limited to 'net/ipv6/udp.c')
| -rw-r--r-- | net/ipv6/udp.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 599e1ba6d1c..d8e5e852fc7 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -1285,10 +1285,18 @@ do_confirm:  void udpv6_destroy_sock(struct sock *sk)  { +	struct udp_sock *up = udp_sk(sk);  	lock_sock(sk);  	udp_v6_flush_pending_frames(sk);  	release_sock(sk); +	if (static_key_false(&udpv6_encap_needed) && up->encap_type) { +		void (*encap_destroy)(struct sock *sk); +		encap_destroy = ACCESS_ONCE(up->encap_destroy); +		if (encap_destroy) +			encap_destroy(sk); +	} +  	inet6_destroy_sock(sk);  }  |