mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	shm: optimize exit_shm()
We may optimistically check .in_use == 0 without holding the rw_mutex: it's the common case, and if it's zero, there certainly won't be any segments associated with us. After taking the lock, the idr_for_each() will do the right thing, so we could now drop the re-check inside the lock without any real cost. But it won't hurt. Signed-off-by: Vasiliy Kulikov <segoon@openwall.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									33a30ed4bd
								
							
						
					
					
						commit
						298507d4d2
					
				
					 1 changed files with 3 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -304,6 +304,9 @@ void exit_shm(struct task_struct *task)
 | 
			
		|||
{
 | 
			
		||||
	struct ipc_namespace *ns = task->nsproxy->ipc_ns;
 | 
			
		||||
 | 
			
		||||
	if (shm_ids(ns).in_use == 0)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	/* Destroy all already created segments, but not mapped yet */
 | 
			
		||||
	down_write(&shm_ids(ns).rw_mutex);
 | 
			
		||||
	if (shm_ids(ns).in_use)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue