CVE-2026-80716 in Linux
Сводка
по VulDB • 28.08.2026
В ядре Linux была устранена следующая уязвимость:
ALSA: pcm — пробуждать ожидающих слива связанных потоков при отсоединении (unlink)
Функция snd_pcm_drain() для связанного потока помещает локальную на стеке запись ожидания в runtime->sleep партнера, который находится в состоянии drain. После вызова schedule_timeout() эта запись удаляется только в том случае, если этот партнер всё ещё присутствует в группе вызывающего объекта. Если членство в группе изменяется во время ожидания и сон завершается из-за сигнала или истечения таймаута (таким образом, функция autoremove_wake_function() не выполняется), то finish_wait() пропускается, и snd_pcm_drain() возвращается с записью, всё ещё находящейся в очереди списка sleep этого потока; последующий вызов wake_up() затем обращается к уже освобожденному кадру стека. Эта ситуация достижима путем отсоединения (unlink) либо сливаемого, либо сливающего потока.
В отличие от пути закрытия (snd_pcm_drop() -> snd_pcm_post_stop()), функция snd_pcm_unlink() никогда не пробуждает очереди сна. Необходимо пробудить всех членов группы под блокировкой группы перед изменением членства в группе, чтобы связанный поток-сливатель был освобожден и удалил свою запись до того, как потоки перестанут быть сгруппированы вместе.
Уязвимость появилась после того, как snd_pcm_link_rwsem перестала удерживаться во время ожидания, а удаление стало условным в зависимости от членства в группе (см. раздел Fixes). Поздний переход на finish_wait() сохранил это условное удаление, поэтому случай с сигналом/таймаутом остался незакрытым.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.