From 88f9d0e3d4e95ad340c78f39d73ba562fbe976e5 Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Tue, 18 Nov 2025 23:28:11 +0100 Subject: [PATCH] Spinlock fix small race window --- kernel/spinlock/spinlock.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/kernel/spinlock/spinlock.c b/kernel/spinlock/spinlock.c index b2199b7..8624003 100644 --- a/kernel/spinlock/spinlock.c +++ b/kernel/spinlock/spinlock.c @@ -17,7 +17,7 @@ void spinlock_init(SpinLock *sl) { uint64_t irqsave(void) { uint64_t flags; - asm volatile("pushfq; cli; popq %0" : "=r"(flags) :: "memory", "cc"); + asm volatile("pushfq; popq %0; cli" : "=r"(flags) :: "memory", "cc"); return flags; } @@ -43,7 +43,6 @@ void irqrestore_nested(void) { void spinlock_acquire(SpinLock *sl) { irqsave_nested(); - while (atomic_test_and_set_explicit(&sl->lock, memory_order_acquire)) { SPINLOCK_HINT(); }