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

Сводка

по VulDB • 28.08.2026

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

ALSA: seq: oss: Синхронизация состояния сброса readq с q->lock

Функция snd_seq_oss_readq_clear() обнуляет qlen, head и tail без захвата блокировки q->lock, хотя обычные пути чтения и записи сериализуют то же состояние кольцевого буфера под этой спинблокировкой. В результате может возникнуть гонка (race condition) между сбросом и функциями snd_seq_oss_readq_free() или snd_seq_oss_readq_put_event(), что приводит к сохранению устаревших записей в очереди, потере недавно добавленных элементов или неверному сообщению о готовности после пробуждения. KCSAN сообщает о гонке данных между snd_seq_oss_readq_clear() и snd_seq_oss_readq_free().

Необходимо захватывать q->lock при очистке кольцевого буфера и сбросе input_time. Логика добавления элементов (enqueue) вынесена во вспомогательную функцию, вызываемую с уже установленной блокировкой, чтобы snd_seq_oss_readq_put_timestamp() обновляла свое состояние подавления под той же блокировкой, избегая гонки со путем сброса.

Сценарий ошибки включает два потока выполнения, где каждый столбец показывает порядок операций внутри этого пути:

путь сброса: заблокированный обновиатель readq: 1. snd_seq_oss_reset() или 1. Чтущий поток или производитель обратного вызова освобождение достигает захватывает q->lock для той же очереди. snd_seq_oss_readq_clear(). 2. snd_seq_oss_readq_clear() 2. Обновиатель проверяет или изменяет обнуляет qlen, head, tail, qlen, head и tail. и input_time. 3. snd_seq_oss_readq_clear() 3. Обновиватель завершает свою пробуждает ожидающие потоки на последовательность read-modify-write. q->midi_sleep. 4. Без захвата q->lock сброс 4. Полученное состояние кольцевого буфера может пересекаться с определяет будущие чтения и готовность. заблокированным обновлением.

KCSAN сообщает:

BUG: KCSAN: data-race in snd_seq_oss_readq_clear / snd_seq_oss_readq_free

запись в 0xffff8881069fe608 размером 4 байта выполнена задачей 120516 на cpu 0: snd_seq_oss_readq_free+0x6c/0x80 snd_seq_oss_read+0xcb/0x250 odev_read+0x38/0x60 vfs_read+0xff/0x600 ksys_read+0xb4/0x140 __x64_sys_read+0x46/0x60 do_syscall_64+0xbb/0x2f0 entry_SYSCALL_64_after_hwframe+0x77/0x7f

чтение из 0xffff8881069fe608 размером 4 байта выполнено задачей 120517 на cpu 1: snd_seq_oss_readq_clear+0x1f/0x90 snd_seq_oss_reset+0xa7/0xf0 snd_seq_oss_ioctl+0x6f6/0x7e0 odev_ioctl+0x56/0xc0 __x64_sys_ioctl+0xd1/0x120 do_syscall_64+0xbb/0x2f0 entry_SYSCALL_64_after_hwframe+0x77/0x7f

значение изменилось: 0x00000001 -> 0x00000000

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

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

Linux

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

26.08.2026

Раскрытие

28.08.2026

Модерация

принято

Вход

VDB-396559

EPSS

0.00000

KEV

Нет

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

Очень низкий

Источники

Want to know what is going to be exploited?

We predict KEV entries!