From e6edef2d8e82f383857720b8a38d68cfc6e23276 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 12 Nov 2025 10:34:18 -0700 Subject: [PATCH] Downgrade addrspace outside futex loop --- src/syscall/futex.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/syscall/futex.rs b/src/syscall/futex.rs index c96698014b..bb62fc65d1 100644 --- a/src/syscall/futex.rs +++ b/src/syscall/futex.rs @@ -185,11 +185,12 @@ pub fn futex( let is_empty = if let Some(futexes) = futexes_map.get_mut(&target_physaddr) { let mut i = 0; + let current_addrsp_weak = Arc::downgrade(¤t_addrsp); // 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 - || !Arc::downgrade(¤t_addrsp).ptr_eq(&futexes[i].addr_space) + || !current_addrsp_weak.ptr_eq(&futexes[i].addr_space) { i += 1; continue;