From 985bc2623fe390fb57f88dca34a9cc38e11cbb2a Mon Sep 17 00:00:00 2001 From: MJ Pooladkhay Date: Sat, 11 Jul 2026 01:13:36 +0100 Subject: [PATCH] Fix a race in get_round_robin_index. --- src/memory/mod.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/memory/mod.rs b/src/memory/mod.rs index 16c85d694b..c6f4e99216 100644 --- a/src/memory/mod.rs +++ b/src/memory/mod.rs @@ -93,12 +93,9 @@ pub fn allocate_frame() -> Option { } fn get_round_robin_index() -> usize { - static CURRENT_INDEX: AtomicU8 = AtomicU8::new(0); - if CURRENT_INDEX.load(Ordering::Acquire) as usize == FREE_LISTS.get().unwrap().len() { - CURRENT_INDEX.store(1, Ordering::Release); - return 0; - } - CURRENT_INDEX.fetch_add(1, Ordering::AcqRel) as usize + static CURRENT_INDEX: AtomicUsize = AtomicUsize::new(0); + let len = FREE_LISTS.get().unwrap().len(); + CURRENT_INDEX.fetch_add(1, Ordering::Relaxed) % len } // TODO: Flags, strategy