diff options
Diffstat (limited to 'rtic-common/src/wait_queue.rs')
| -rw-r--r-- | rtic-common/src/wait_queue.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/rtic-common/src/wait_queue.rs b/rtic-common/src/wait_queue.rs index 8a3f80e..0f3a59d 100644 --- a/rtic-common/src/wait_queue.rs +++ b/rtic-common/src/wait_queue.rs @@ -141,11 +141,12 @@ impl<T: Clone> Link<T> { /// Remove this link from a linked list. pub fn remove_from_list(&self, list: &DoublyLinkedList<T>) { 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); |
