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
commit 21d288a10e
Notes: sideshowbarker 2024-07-18 22:49:12 +09:00
5 changed files with 45 additions and 29 deletions

View file

@ -87,7 +87,7 @@ class Thread
public:
inline static Thread* current()
{
return Processor::current().current_thread();
return Processor::current_thread();
}
explicit Thread(NonnullRefPtr<Process>);