CVE-2026-80828 in Linuxinfo

Zusammenfassung

von VulDB • 04.09.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

ALSA: usb-audio: Vollständige Bereinigung nach Fehlern beim System-Resume (Wiederherstellung aus dem Ruhezustand)

Ein fehlgeschlagenes System-Resume kann dazu führen, dass die Soundkarte bis zum Neustart unbenutzbar bleibt. usb_audio_resume() springt zu err_out, wenn snd_usb_pcm_resume() oder snd_usb_mixer_resume() fehlschlägt. Der Fehlerpfad überspringt den out:-Block, der D0 wiederherstellt und chip->num_suspended_intf dekrementiert.

Die Karte verbleibt im Zustand SNDRV_CTL_POWER_D3hot, sodass spätere Steuerzugriffe in snd_power_ref_and_wait() blockieren. Das USB-Subsystem protokolliert einen Fehler beim Interface-Resume-Callback. Es wird kein erneuter Versuch unternommen, diesen Callback aufzurufen, sodass ein späterer Callback die übersprungene Bereinigung nicht abschließen kann.

usb_audio_suspend() inkrementiert num_suspended_intf vor der Rückgabe des Erfolgsstatus. Ein System-Resume-Callback muss den Zähler für das System-Suspend (Ruhezustand) verbrauchen, auch wenn das Resume einer Komponente fehlschlägt. Andernfalls verfälscht der hängengebliebene Zähler spätere Suspend- und Resume-Zyklen.

Wenden Sie diese Bereinigung nicht auf Fehler beim Runtime-Resume an. Das Runtime Power Management (PM) kann -EAGAIN oder -EBUSY ohne einen weiteren Suspend-Callback wiederholen. Der Zähler muss weiterhin das gesperrte Interface beschreiben. Andere Runtime-Resume-Fehler setzen runtime_error im PM-Core und führen nicht zu einem sofortigen erneuten Aufruf des Callbacks.

Beide Teile des System-Resumefehlerpfads sind seit Langem vorhanden. Das Commit 88a8516a2128a ("ALSA: usbaudio: implement USB autosuspend") führte err_out nach der D0-Wiederherstellung ein. Das Commit 862b2509d157c ("ALSA: usb-audio: Fix inconsistent card PM state after resume") verschob später num_suspended_intf-- in den out:-Block. Der Fehlerpfad überspringt nun beide Operationen.

Es wird kein Code von Drittanbietern benötigt, um den Fehlerpfad zu erreichen. snd_usb_mixer_resume() endet in snd_usb_mixer_activate(), das für Geräte mit einem Mixer-Status-URB das Ergebnis von usb_submit_urb() zurückgibt. Sein mixer->private_resume-Hook kann ebenfalls über scarlett2_init_notify() fehlschlagen. snd_usb_pcm_resume() sendet eine SET_CUR-Anforderung an eine UAC3-Stromdomäne. Sie kann -EPIPE oder -EIO zurückgeben, wenn das Gerät die Anforderung blockiert (stalls).

Leiten Sie einen Komponentenfehler nur dann durch out:, wenn system_suspend ungleich Null ist. Geben Sie Runtime-Resume-Fehler weiterhin über err_out zurück. Spätere Stufen des Komponentenresumes bleiben übersprungen. Der ursprüngliche Fehler erreicht weiterhin das USB-Subsystem. Ein späterer Transfer kann fehlschlagen, wenn sich das Gerät nicht erholt hat.

Ich habe den System-Resumefehler auf einem Audient iD14 MkI mit einem außerhalb des Baums liegenden (out-of-tree) diagnostischen Mixer-Resume-Hook reproduziert. Eine injizierte -EIO-Fehlermeldung im ungepatchten Kern ließ Steuerleser in unterbrechbaren Schlafzustand in snd_power_ref_and_wait() verfallen, bis ein Neustart erfolgte. Mit diesem Patch wurde der gleiche Fehler behoben und der Steuerzugriff wiederhergestellt. Ein zweites System-Suspend und -Resume war ebenfalls erfolgreich, nachdem ich die Fehlerinjektion deaktiviert hatte.

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

Zuständig

Linux

Reservieren

26.08.2026

Veröffentlichung

04.09.2026

Moderieren

akzeptiert

Eintrag

VDB-398906

CPE

bereit

EPSS

0.00190

KEV

nein

Aktivitäten

low

Quellen

Do you need the next level of professionalism?

Upgrade your account now!