CVE-2026-80815 in Linux
Sumário
de VulDB • 04/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
ALSA: scarlett2: Use um URB privado para o endpoint de notificação
scarlett2_init_notify() usava mixer->urb, que é alocado por snd_usb_mixer_status_create() para o endpoint de interrupção de status UAC2 e gerenciado por mixer.c. Em um dispositivo com esse endpoint, a verificação "já em uso" (already in use) aciona no URB de status e retorna 0 como sucesso sem realizar nenhuma ação. Nenhum URB de notificação é submetido, e cmd_done permanece zerado porque é inicializado após essa verificação e não em outro lugar. scarlett2_usb_init() então emite SCARLETT2_USB_INIT_1 e wait_for_completion_timeout() causaria uma falha (crash) ao adicionar à wait.head zerada.
Use um URB separado em scarlett2_data, conforme feito para FCP, e inicialize cmd_done em scarlett2_init_private(). mixer.c também estava liberando o URB em snd_usb_mixer_free() e re-submetendo-o em snd_usb_mixer_activate(), então scarlett2 deve agora fazer ambas as coisas: adicionar scarlett2_cleanup_urb(), chamada de private_free e private_suspend, e um callback private_resume para restabelecer o URB após a retomada (resume). scarlett2_init_notify() é alcançado a partir daí, e o caminho de finalização do URB em scarlett2_notify() completa cmd_done, deixando uma contagem obsoleta que satisfaria a espera do próximo comando antes da confirmação (ACK) do dispositivo. Use reinit_completion() para limpá-la.
Libere também o URB se a alocação do buffer de transferência falhar, e ambos os casos se usb_submit_urb() falhar. Mova scarlett2_init_notify() para junto de scarlett2_cleanup_urb() para que scarlett2_init_private() possa referenciá-lo sem uma declaração antecipada (forward declaration).
VulDB is the best source for vulnerability data and more expert information about this specific topic.