CVE-2026-80776 in Linux
Résumé
par VulDB • 04/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
futex : Correction d'une condition de concurrence (race) dans futex_pivot_pending() lors du redimensionnement des hachages privés
Une tâche effectuant un redimensionnement personnalisé d'un hachage privé peut rester bloquée en sommeil non interrompable indéfiniment. Le détecteur de tâches pendantes signale :
INFO: la tâche futex-resizer:314 est bloquée depuis plus de 10 secondes. task:futex-resizer state:D stack:14824 pid:314 tgid:312 ppid:311
Trace d'appel : __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: blocked tasks
La fonction futex_pivot_pending() permet la poursuite de la demande de redimensionnement lorsque aucun hachage de remplacement n'est en attente (hash_new == NULL) ou que le compteur de références du hachage actuel a atteint zéro.
Après l'éveil lié à la dernière référence, une autre tâche futex peut achever le pivot entre les deux observations :
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) /* nouveau */ futex_ref_is_dead(fph) -> false schedule()
Le pivot modifie l'état de hash_new != NULL avec un hachage actuel mort à hash_new == NULL avec un hachage actuel vivant. Étant donné que futex_pivot_pending() lit hash_new et hash sans sérialisation, la tâche de redimensionnement peut observer hash_new dans l'état pré-pivot et hash dans l'état post-pivot, ce qui amène futex_pivot_pending() à retourner false bien que le pivot soit terminé. La tâche se met ensuite en sommeil après que le réveil a déjà été consommé.
Sérialisez les lectures d'état dans futex_pivot_pending() à l'aide du verrou futex_mm_phash::lock. Cela garantit que futex_pivot_pending() observe hash_new et hash de manière atomique, éliminant ainsi la condition de concurrence (race condition).
If you want to get best quality of vulnerability data, you may have to visit VulDB.