CVE-2026-80776 in LinuxИнформация

Сводка

по VulDB • 04.09.2026

В ядре Linux была устранена следующая уязвимость:

futex: исправление состояния гонки (race) в функции futex_pivot_pending() при изменении размера хеш-таблицы для приватных семафоров

Задача, выполняющая пользовательское изменение размера приватной хеш-таблицы, может бесконечно оставаться заблокированной в прерываемом сне (uninterruptible sleep). Детектор зависших задач сообщает:

INFO: task futex-resizer:314 blocked for more than 10 seconds. task:futex-resizer state: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: blocked tasks

Функция futex_pivot_pending() позволяет запросу на изменение размера продолжаться, если нет ожидающей замены хеш-таблицы (hash_new == NULL) или счетчик ссылок текущей хеш-таблицы достиг нуля.

После пробуждения от последней ссылки другая задача futex может завершить переход между двумя состояниями наблюдений:

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) /* new */ futex_ref_is_dead(fph) -> false schedule()

Переход изменяет состояние с hash_new != NULL и мертвой текущей хеш-таблицы на hash_new == NULL и живую текущую хеш-таблицу. Поскольку функция futex_pivot_pending() считывает значения hash_new и hash без сериализации, задача изменения размера может наблюдать значение hash_new в состоянии до перехода (pre-pivot), а значение hash — в состоянии после перехода (post-pivot). Это приводит к тому, что futex_pivot_pending() возвращает false, даже если переход уже завершен. Затем задача переходит ко сну после того, как пробуждение уже было потреблено.

Сериализуйте чтение состояний в функции futex_pivot_pending(), используя блокировку futex_mm_phash::lock. Это гарантирует атомарное наблюдение значений hash_new и hash функцией futex_pivot_pending(), устраняя состояние гонки (race condition).

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Ответственный

Linux

Резервировать

26.08.2026

Раскрытие

04.09.2026

Модерация

принято

Вход

VDB-398927

EPSS

0.00166

KEV

Нет

Деятельности

Очень низкий

Источники

Want to stay up to date on a daily basis?

Enable the mail alert feature now!