mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	net: Flush deferred skb free on socket destroy
The cited Fixes patch moved to a deferred skb approach where the skbs
are not freed immediately under the socket lock.  Add a WARN_ON_ONCE()
to verify the deferred list is empty on socket destroy, and empty it to
prevent potential memory leaks.
Fixes: f35f821935 ("tcp: defer skb freeing after socket lock is released")
Signed-off-by: Gal Pressman <gal@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
			
			
This commit is contained in:
		
							parent
							
								
									db094aa814
								
							
						
					
					
						commit
						79074a72d3
					
				
					 1 changed files with 3 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -2049,6 +2049,9 @@ void sk_destruct(struct sock *sk)
 | 
			
		|||
{
 | 
			
		||||
	bool use_call_rcu = sock_flag(sk, SOCK_RCU_FREE);
 | 
			
		||||
 | 
			
		||||
	WARN_ON_ONCE(!llist_empty(&sk->defer_list));
 | 
			
		||||
	sk_defer_free_flush(sk);
 | 
			
		||||
 | 
			
		||||
	if (rcu_access_pointer(sk->sk_reuseport_cb)) {
 | 
			
		||||
		reuseport_detach_sock(sk);
 | 
			
		||||
		use_call_rcu = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue