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

Сводка

по VulDB • 04.09.2026

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

ALSA: scarlett2: Использование отдельного URB для конечной точки уведомлений

Функция `scarlett2_init_notify()` использовала `mixer->urb`, который выделяется функцией `snd_usb_mixer_status_create()` для прерывания статуса UAC2 и управляется модулем `mixer.c`. На устройстве с такой конечной точкой проверка «already in use» (уже в использовании) срабатывает на статусном URB, возвращая 0 как признак успеха без выполнения каких-либо действий. Уведомляющий URB не отправляется, а переменная `cmd_done` остается обнуленной, поскольку она инициализируется после этой проверки и нигде более. Затем функция `scarlett2_usb_init()` выдает команду `SCARLETT2_USB_INIT_1`, и вызов `wait_for_completion_timeout()` приводит к аварийному завершению работы (crash) из-за добавления в обнуленный указатель `wait.head`.

Необходимо использовать отдельный URB в структуре данных scarlett2, как это сделано для FCP, а также инициализировать `cmd_done` в функции `scarlett2_init_private()`. Модуль `mixer.c` ранее освобождал URB в `snd_usb_mixer_free()` и повторно отправлял его в `snd_usb_mixer_activate()`, поэтому теперь модуль scarlett2 должен выполнять обе эти операции: добавить функцию `scarlett2_cleanup_urb()`, вызываемую из `private_free` и `private_suspend`, а также обратный вызов `private_resume` для восстановления URB после выхода из режима ожидания. Функция `scarlett2_init_notify()` достигается через этот механизм, а путь завершения убийства URB в функции `scarlett2_notify()` завершает операцию с `cmd_done`, оставляя неактуальное (stale) значение счетчика, которое может ложно удовлетворить ожидание следующей команды до получения подтверждения от устройства. Для очистки этого значения следует использовать функцию `reinit_completion()`.

Также необходимо освобождать URB в случае неудачи выделения буфера передачи, а также в обоих случаях при сбое функции `usb_submit_urb()`. Функцию `scarlett2_init_notify()` перемещают ближе к `scarlett2_cleanup_urb()`, чтобы функция `scarlett2_init_private()` могла ссылаться на нее без предварительного объявления (forward declaration).

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

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

Linux

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

26.08.2026

Раскрытие

04.09.2026

Модерация

принято

Вход

VDB-398992

EPSS

0.00000

KEV

Нет

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

Очень низкий

Источники

Do you know our Splunk app?

Download it now for free!