From 7770a9452cb906c2ca86772dcc44d9b229db40a9 Mon Sep 17 00:00:00 2001 From: auronandace Date: Mon, 23 Feb 2026 11:57:28 +0000 Subject: [PATCH] avoid direct indexing futexes --- src/syscall/futex.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/syscall/futex.rs b/src/syscall/futex.rs index 673d089432..1078aa50fc 100644 --- a/src/syscall/futex.rs +++ b/src/syscall/futex.rs @@ -192,13 +192,15 @@ pub fn futex( // TODO: Use something like retain, once it is possible to tell it when to stop iterating... while i < futexes.len() && woken < val { - if futexes[i].target_virtaddr != target_virtaddr - || !current_addrsp_weak.ptr_eq(&futexes[i].addr_space) + // SAFETY: already verified index is less than length + let futex = unsafe { futexes.get_unchecked_mut(i) }; + if futex.target_virtaddr != target_virtaddr + || !current_addrsp_weak.ptr_eq(&futex.addr_space) { i += 1; continue; } - futexes[i].context_lock.write(token.token()).unblock(); + futex.context_lock.write(token.token()).unblock(); futexes.swap_remove(i); woken += 1; }