CVE-2026-80776 in Linux
Zusammenfassung
von VulDB • 04.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
futex: Behebung einer Race Condition in futex_pivot_pending() während der privaten Hash-Resizierung
Ein Task, der eine benutzerdefinierte private Hash-Resizierung durchführt, kann unbestimmt im unterbrechbaren Schlaf (uninterruptible sleep) blockiert bleiben. Der Hung-Task-Detektor meldet:
INFO: task futex-resizer:314 ist seit mehr als 10 Sekunden blockiert. task:futex-resizer status:D stack:14824 pid:314 tgid:312 ppid:311
Call Trace: __schedule+0x521/0xf30 schedule+0x22/0xa0 futex_hash_allocate+0x3db/0x490 __do_sys_prctl+0x6f5/0xbd0 do_syscall_64+0xf9/0x530 entry_SYSCALL_64_after_hwframe+0x77/0x7f
Kernel panic - not syncing: hung_task: blockierte Tasks
futex_pivot_pending() ermöglicht es der Resizierungsanforderung, fortzufahren, wenn entweder kein Ersatz-Hash aussteht (hash_new == NULL) oder die aktuelle Hash-Referenzzahl null erreicht hat.
Nach dem Wake-up für den letzten Verweis kann ein anderer futex-Task das Pivot zwischen den beiden Beobachtungen abschließen:
T1 T2
futex_hash_allocate() wait_var_event(mm, ...) futex_pivot_pending(mm) hash_new != NULL futex_hash() futex_ref_get(old) -> false futex_pivot_hash(mm) hash_new = NULL __futex_pivot_hash(mm, new) rcu_assign_pointer(hash, new) fph = rcu_dereference(hash) /* neu */ futex_ref_is_dead(fph) -> false schedule()
Das Pivot ändert den Zustand von hash_new != NULL mit einem toten aktuellen Hash zu hash_new == NULL mit einem lebenden aktuellen Hash. Da futex_pivot_pending() hash_new und hash ohne Serialisierung liest, kann der Resizierungs-Task hash_new im Pre-Pivot-Zustand und hash im Post-Pivot-Zustand beobachten, was dazu führt, dass futex_pivot_pending() false zurückgibt, obwohl das Pivot abgeschlossen ist. Der Task geht dann in den Schlaf, nachdem das Wake-up bereits verbraucht wurde.
Serialisieren Sie die Lesezugriffe auf den Status in futex_pivot_pending() unter Verwendung von futex_mm_phash::lock. Dies garantiert, dass futex_pivot_pending() hash_new und hash atomar beobachtet und eliminiert damit die Race Condition.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.