diff --git a/kernel/proc/proc.c b/kernel/proc/proc.c index 8b326f9..80baef1 100644 --- a/kernel/proc/proc.c +++ b/kernel/proc/proc.c @@ -378,7 +378,11 @@ void proc_kill (struct proc* proc, struct reschedule_ctx* rctx) { } void proc_wait_for (struct proc* proc, struct reschedule_ctx* rctx, struct proc* wait_proc) { + uint64_t fwp; + + spin_lock (&wait_proc->lock, &fwp); proc_sq_suspend (proc, &wait_proc->done_sq, NULL, 0, rctx, NULL, NULL); + spin_unlock (&wait_proc->lock, fwp); } void proc_irq_sched (void* arg, void* regs, bool user, struct reschedule_ctx* rctx) {