mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:07:46 +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
|
@ -40,9 +40,10 @@ ErrorOr<FlatPtr> Process::sys$setsid()
|
|||
|
||||
m_pg = TRY(ProcessGroup::try_create(ProcessGroupID(pid().value())));
|
||||
m_tty = nullptr;
|
||||
ProtectedDataMutationScope scope { *this };
|
||||
m_protected_values.sid = pid().value();
|
||||
return sid().value();
|
||||
return with_mutable_protected_data([&](auto& protected_data) -> ErrorOr<FlatPtr> {
|
||||
protected_data.sid = pid().value();
|
||||
return protected_data.sid.value();
|
||||
});
|
||||
}
|
||||
|
||||
ErrorOr<FlatPtr> Process::sys$getpgid(pid_t pid)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue