diff --git a/kernel/futex.c b/kernel/futex.c index 929407a1..934174a3 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -677,6 +677,7 @@ static uint64_t futex_wait_queue_me(struct futex_hash_bucket *hb, struct futex_q * access to the hash list and forcing another memory barrier. */ xchg4(&(cpu_local_var(current)->status), PS_INTERRUPTIBLE); + barrier(); queue_me(q, hb); if (!plist_node_empty(&q->list)) { diff --git a/kernel/process.c b/kernel/process.c index 59ee4aff..187a1b72 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -2861,6 +2861,7 @@ sched_wakeup_thread(struct thread *thread, int valid_states) proc->status = PS_RUNNING; mcs_rwlock_writer_unlock_noirq(&proc->update_lock, &updatelock); xchg4((int *)(&thread->status), PS_RUNNING); + barrier(); status = 0; } else {