1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:58:12 +00:00

Fix race condition in exec().

...also hook up sys$fstat in the syscall dispatcher.
This commit is contained in:
Andreas Kling 2018-11-17 00:52:29 +01:00
parent bb9766ee17
commit 95e0f6ad82
2 changed files with 8 additions and 2 deletions

View file

@ -363,7 +363,11 @@ int Process::do_exec(const String& path, Vector<String>&& arguments, Vector<Stri
}
}
InterruptDisabler disabler;
// We cli() manually here because we don't want to get interrupted between do_exec() and Schedule::yield().
// The reason is that the task redirection we've set up above will be clobbered by the timer IRQ.
// If we used an InterruptDisabler that sti()'d on exit, we might timer tick'd too soon in exec().
cli();
Scheduler::prepare_to_modify_tss(*this);
m_name = parts.takeLast();