1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 22:37:35 +00:00

Kernel: Make Thread::current smp-safe

Change Thread::current to be a static function and read using the fs
register, which eliminates a window between Processor::current()
returning and calling a function on it, which can trigger preemption
and a move to a different processor, which then causes operating
on the wrong object.
This commit is contained in:
Tom 2021-01-26 14:16:07 -07:00 committed by Andreas Kling
parent f88a8b16d7
commit 21d288a10e
5 changed files with 45 additions and 29 deletions

View file

@ -112,7 +112,7 @@ class Process
public:
inline static Process* current()
{
auto current_thread = Processor::current().current_thread();
auto current_thread = Processor::current_thread();
return current_thread ? &current_thread->process() : nullptr;
}