diff --git a/kernel/kernel/Syscall.cpp b/kernel/kernel/Syscall.cpp index ad3d7f6e..b99ea1df 100644 --- a/kernel/kernel/Syscall.cpp +++ b/kernel/kernel/Syscall.cpp @@ -62,14 +62,10 @@ namespace Kernel ret = sys_fork_trampoline(); else #pragma GCC diagnostic push -#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic warning "-Wmaybe-uninitialized" -#endif ret = (Process::current().*s_syscall_handlers[syscall])(arg1, arg2, arg3, arg4, arg5); #pragma GCC diagnostic pop - Processor::set_interrupt_state(InterruptState::Disabled); - #if DUMP_ALL_SYSCALLS if (ret.is_error()) dprintln("{} pid {}: {}: {}", process_path, Process::current().pid(), s_syscall_names[syscall], ret.error()); @@ -100,6 +96,8 @@ namespace Kernel if (ret.is_error() && ret.error().get_error_code() == EINTR) ret = BAN::Error::from_errno(ERESTART); + Processor::set_interrupt_state(InterruptState::Disabled); + ASSERT(Kernel::Thread::current().state() == Kernel::Thread::State::Executing); if (ret.is_error())