From e4a5c07b3d90e578c83cb7c59cde76939d01bdfa Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Sat, 8 Nov 2025 21:40:15 +0100 Subject: [PATCH] Change proc state under held spinlock --- kernel/proc/proc.c | 2 ++ kernel/syscall/proc.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/kernel/proc/proc.c b/kernel/proc/proc.c index 7004043..105229d 100644 --- a/kernel/proc/proc.c +++ b/kernel/proc/proc.c @@ -239,7 +239,9 @@ void proc_sched(void *cpustate) { } void proc_kill(Proc *proc) { + spinlock_acquire(&PROCS.spinlock); proc->state = PROC_ZOMBIE; + spinlock_release(&PROCS.spinlock); } void proc_killself(void) { diff --git a/kernel/syscall/proc.c b/kernel/syscall/proc.c index 51751d0..18dd392 100644 --- a/kernel/syscall/proc.c +++ b/kernel/syscall/proc.c @@ -125,7 +125,9 @@ int32_t SYSCALL1(sys_proc_run, pid1) { goto done; } + spinlock_acquire(&PROCS.spinlock); proc->state = PROC_READY; + spinlock_release(&PROCS.spinlock); done: return ret;