diff --git a/kernel/futex.c b/kernel/futex.c index 86acc0c74a0..c6e5e47e683 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -47,7 +47,11 @@ int z_impl_k_futex_wake(struct k_futex *futex, bool wake_all) } } while (thread && wake_all); - z_reschedule(&futex_data->lock, key); + if (woken == 0) { + k_spin_unlock(&futex_data->lock, key); + } else { + z_reschedule(&futex_data->lock, key); + } return woken; }