mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 20:12:43 +00:00 
			
		
		
		
	Kernel: Guard Process "protected data" with a spinlock
This ensures that both mutable and immutable access to the protected data of a process is serialized. Note that there may still be multiple TOCTOU issues around this, as we have a bunch of convenience accessors that make it easy to introduce them. We'll need to audit those as well.
This commit is contained in:
		
							parent
							
								
									728c3fbd14
								
							
						
					
					
						commit
						8ed06ad814
					
				
					 11 changed files with 348 additions and 300 deletions
				
			
		|  | @ -18,11 +18,10 @@ void Process::sys$exit(int status) | |||
|         VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this); | ||||
|     } | ||||
| 
 | ||||
|     { | ||||
|         ProtectedDataMutationScope scope { *this }; | ||||
|         m_protected_values.termination_status = status; | ||||
|         m_protected_values.termination_signal = 0; | ||||
|     } | ||||
|     with_mutable_protected_data([status](auto& protected_data) { | ||||
|         protected_data.termination_status = status; | ||||
|         protected_data.termination_signal = 0; | ||||
|     }); | ||||
| 
 | ||||
|     auto* current_thread = Thread::current(); | ||||
|     current_thread->set_profiling_suppressed(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling