diff --git a/rtic-common/src/wait_queue.rs b/rtic-common/src/wait_queue.rs index 8a3f80ea7ec..0f3a59d1542 100644 --- a/rtic-common/src/wait_queue.rs +++ b/rtic-common/src/wait_queue.rs @@ -141,11 +141,12 @@ impl Link { /// Remove this link from a linked list. pub fn remove_from_list(&self, list: &DoublyLinkedList) { cs::with(|_| { + // Make sure all previous writes are visible + core::sync::atomic::fence(Ordering::SeqCst); + if self.is_popped() { return; } - // Make sure all previous writes are visible - core::sync::atomic::fence(Ordering::SeqCst); let prev = self.prev.load(Self::R); let next = self.next.load(Self::R);