diff --git a/Kernel/Process.h b/Kernel/Process.h index a7deaef04e..9a197e5ce1 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -92,10 +92,10 @@ protected: gid_t m_sgid { 0 }; Vector m_extra_gids; bool m_dumpable { false }; - bool m_has_promises { false }; - u32 m_promises { 0 }; - bool m_has_execpromises { false }; - u32 m_execpromises { 0 }; + Atomic m_has_promises { false }; + Atomic m_promises { 0 }; + Atomic m_has_execpromises { false }; + Atomic m_execpromises { 0 }; mode_t m_umask { 022 }; VirtualAddress m_signal_trampoline; Atomic m_thread_count { 0 }; diff --git a/Kernel/Syscalls/execve.cpp b/Kernel/Syscalls/execve.cpp index ec4991a493..5ee3589dab 100644 --- a/Kernel/Syscalls/execve.cpp +++ b/Kernel/Syscalls/execve.cpp @@ -639,8 +639,8 @@ KResult Process::do_exec(NonnullRefPtr main_program_description { ProtectedDataMutationScope scope { *this }; - m_promises = m_execpromises; - m_has_promises = m_has_execpromises; + m_promises = m_execpromises.load(); + m_has_promises = m_has_execpromises.load(); m_execpromises = 0; m_has_execpromises = false; diff --git a/Kernel/Syscalls/fork.cpp b/Kernel/Syscalls/fork.cpp index 038d48b666..cab53f8a19 100644 --- a/Kernel/Syscalls/fork.cpp +++ b/Kernel/Syscalls/fork.cpp @@ -30,10 +30,10 @@ KResultOr Process::sys$fork(RegisterState& regs) { ProtectedDataMutationScope scope { *child }; - child->m_promises = m_promises; - child->m_execpromises = m_execpromises; - child->m_has_promises = m_has_promises; - child->m_has_execpromises = m_has_execpromises; + child->m_promises = m_promises.load(); + child->m_execpromises = m_execpromises.load(); + child->m_has_promises = m_has_promises.load(); + child->m_has_execpromises = m_has_execpromises.load(); child->m_sid = m_sid; child->m_extra_gids = m_extra_gids; child->m_umask = m_umask; diff --git a/Kernel/Syscalls/pledge.cpp b/Kernel/Syscalls/pledge.cpp index 885b1317a1..f021f718b1 100644 --- a/Kernel/Syscalls/pledge.cpp +++ b/Kernel/Syscalls/pledge.cpp @@ -74,13 +74,13 @@ KResultOr Process::sys$pledge(Userspace