Re: [syzbot] [kernel?] WARNING in futex_pivot_pending

From: Edward Adam Davis

Date: Mon Aug 17 2026 - 00:51:39 EST


#syz test

diff --git a/kernel/futex/core.c b/kernel/futex/core.c
index 128c5752f225..a0b17d2f41da 100644
--- a/kernel/futex/core.c
+++ b/kernel/futex/core.c
@@ -1785,14 +1785,24 @@ static bool futex_pivot_pending(struct mm_struct *mm)
{
struct futex_mm_phash *mmph = &mm->futex.phash;
struct futex_private_hash *fph;
+ unsigned int state;
+ bool ret;
+
+ state = current->__state;
+ __set_current_state(TASK_RUNNING);
+ scoped_guard(mutex, &mmph->lock) {
+ if (!mmph->hash_new) {
+ ret = true;
+ goto out;
+ }

- guard(mutex)(&mmph->lock);
-
- if (!mmph->hash_new)
- return true;
+ fph = rcu_dereference_raw(mmph->hash);
+ ret = futex_ref_is_dead(fph);
+ }
+out:
+ __set_current_state(state);
+ return ret;

- fph = rcu_dereference_raw(mmph->hash);
- return futex_ref_is_dead(fph);
}

static bool futex_hash_less(struct futex_private_hash *a,