mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	[AF_UNIX]: Make unix_tot_inflight counter non-atomic
This counter is _always_ modified under the unix_gc_lock spinlock, so its atomicity can be provided w/o additional efforts. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									8032b46489
								
							
						
					
					
						commit
						9305cfa444
					
				
					 3 changed files with 5 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -12,7 +12,7 @@ extern void unix_gc(void);
 | 
			
		|||
 | 
			
		||||
#define UNIX_HASH_SIZE	256
 | 
			
		||||
 | 
			
		||||
extern atomic_t unix_tot_inflight;
 | 
			
		||||
extern unsigned int unix_tot_inflight;
 | 
			
		||||
 | 
			
		||||
struct unix_address {
 | 
			
		||||
	atomic_t	refcnt;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -457,7 +457,7 @@ static int unix_release_sock (struct sock *sk, int embrion)
 | 
			
		|||
	 *	  What the above comment does talk about? --ANK(980817)
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	if (atomic_read(&unix_tot_inflight))
 | 
			
		||||
	if (unix_tot_inflight)
 | 
			
		||||
		unix_gc();		/* Garbage collect fds */
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -92,7 +92,7 @@ static LIST_HEAD(gc_inflight_list);
 | 
			
		|||
static LIST_HEAD(gc_candidates);
 | 
			
		||||
static DEFINE_SPINLOCK(unix_gc_lock);
 | 
			
		||||
 | 
			
		||||
atomic_t unix_tot_inflight = ATOMIC_INIT(0);
 | 
			
		||||
unsigned int unix_tot_inflight;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static struct sock *unix_get_socket(struct file *filp)
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +133,7 @@ void unix_inflight(struct file *fp)
 | 
			
		|||
		} else {
 | 
			
		||||
			BUG_ON(list_empty(&u->link));
 | 
			
		||||
		}
 | 
			
		||||
		atomic_inc(&unix_tot_inflight);
 | 
			
		||||
		unix_tot_inflight++;
 | 
			
		||||
		spin_unlock(&unix_gc_lock);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -147,7 +147,7 @@ void unix_notinflight(struct file *fp)
 | 
			
		|||
		BUG_ON(list_empty(&u->link));
 | 
			
		||||
		if (atomic_dec_and_test(&u->inflight))
 | 
			
		||||
			list_del_init(&u->link);
 | 
			
		||||
		atomic_dec(&unix_tot_inflight);
 | 
			
		||||
		unix_tot_inflight--;
 | 
			
		||||
		spin_unlock(&unix_gc_lock);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue