From 4d3050eaabfaccbade5ab036e0d46cd42bb8b156 Mon Sep 17 00:00:00 2001 From: apio Date: Fri, 24 Mar 2023 20:59:07 +0100 Subject: [PATCH] kernel: Retrieve all thread information before marking it as dead in waitpid() In case we get interrupted by the reaper thread. --- kernel/src/sys/waitpid.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/src/sys/waitpid.cpp b/kernel/src/sys/waitpid.cpp index 7d366c24..698cfc6f 100644 --- a/kernel/src/sys/waitpid.cpp +++ b/kernel/src/sys/waitpid.cpp @@ -43,11 +43,12 @@ Result sys_waitpid(Registers*, SyscallArgs args) return err(ENOTSUP); int status = (int)thread->status; + u64 id = thread->id; thread->state = ThreadState::Dying; if (status_ptr) if (!MemoryManager::copy_to_user_typed(status_ptr, &status)) return err(EFAULT); - return thread->id; + return id; }