diff options
Diffstat (limited to 'net/ipv4/udp.c')
| -rw-r--r-- | net/ipv4/udp.c | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 265c42cf963..0a073a26372 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -1762,9 +1762,16 @@ int udp_rcv(struct sk_buff *skb)  void udp_destroy_sock(struct sock *sk)  { +	struct udp_sock *up = udp_sk(sk);  	bool slow = lock_sock_fast(sk);  	udp_flush_pending_frames(sk);  	unlock_sock_fast(sk, slow); +	if (static_key_false(&udp_encap_needed) && up->encap_type) { +		void (*encap_destroy)(struct sock *sk); +		encap_destroy = ACCESS_ONCE(up->encap_destroy); +		if (encap_destroy) +			encap_destroy(sk); +	}  }  /*  |