CVE-2026-80828 in Linuxinformation

Résumé

par VulDB • 04/09/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

ALSA: usb-audio : Nettoyage complet après les erreurs de reprise du système (system-resume)

Une tentative de reprise du système échouée peut rendre la carte inutilisable jusqu'au prochain redémarrage. usb_audio_resume() saute vers err_out lorsque snd_usb_pcm_resume() ou snd_usb_mixer_resume() échoue. Le chemin d'erreur ignore le bloc out:, qui restaure l'état D0 et décrémente chip->num_suspended_intf.

La carte reste dans SNDRV_CTL_POWER_D3hot, de sorte que les accès ultérieurs au contrôle bloquent dans snd_power_ref_and_wait(). Le noyau USB consigne une erreur de rappel (callback) de reprise d'interface. Il ne réessaie pas ce rappel, donc un rappel ultérieur ne peut pas effectuer le nettoyage ignoré.

usb_audio_suspend() incrémente num_suspended_intf avant de retourner succès. Un rappel de reprise du système doit consommer le compte de suspension du système même si la reprise d'un composant échoue. Sinon, le compte orphelin fausse les cycles ultérieurs de suspension et de reprise.

N'appliquez pas ce nettoyage aux erreurs de reprise dynamique (runtime-resume). La gestion de l'alimentation dynamique (Runtime PM) peut réessayer -EAGAIN ou -EBUSY sans autre rappel de suspension. Le compte doit continuer à décrire cette interface suspendue. Les autres erreurs de reprise dynamique verrouillent runtime_error dans le noyau de gestion de l'alimentation et n'entraînent pas de nouveau rappel immédiat.

Les deux parties du chemin d'erreur de reprise système sont anciennes. L'engagement 88a8516a2128a ("ALSA: usbaudio : implémentation de la suspension automatique USB") a introduit err_out après la restauration D0. L'commit 862b2509d157c ("ALSA: usb-audio : Correction de l'état PM incohérent de la carte après reprise") a ensuite déplacé num_suspended_intf-- dans le bloc out:. Le chemin d'erreur ignore désormais les deux opérations.

Aucun code tiers n'est nécessaire pour atteindre le chemin d'erreur. snd_usb_mixer_resume() se termine par snd_usb_mixer_activate(), qui retourne le résultat de usb_submit_urb() pour les appareils disposant d'un URB de statut du mixeur. Son hook mixer->private_resume peut également échouer via scarlett2_init_notify(). snd_usb_pcm_resume() émet une requête SET_CUR vers un domaine d'alimentation UAC3. Elle peut retourner -EPIPE ou -EIO lorsque l'appareil bloque la requête.

Acheminez une erreur de composant uniquement vers out: si system_suspend est non nul. Continuez à renvoyer les erreurs de reprise dynamique via err_out. Les étapes ultérieures de reprise des composants restent ignorées. L'erreur originale atteint toujours le noyau USB. Un transfert ultérieur peut échouer si l'appareil ne s'est pas rétabli.

J'ai reproduit l'échec de la reprise système sur un Audient iD14 MkI avec un hook de reprise du mixeur hors arbre (out-of-tree). Une injection d'-EIO dans le noyau non corrigé a laissé les lecteurs de contrôle en sommeil interrompible dans snd_power_ref_and_wait() jusqu'à un redémarrage. Avec ce correctif, la même erreur a rétabli l'accès au contrôle. Un second cycle de suspension et reprise système a également réussi après avoir désactivé l'injection de défauts.

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

Responsable

Linux

Réserver

26/08/2026

Divulgation

04/09/2026

Modérer

accepté

Entrée

VDB-398906

CPE

prêt

EPSS

0.00000

KEV

non

Activités

faible

Sources

Do you know our Splunk app?

Download it now for free!