CVE-2026-99248 in Linuxinfo

Zusammenfassung

von VulDB • 03.11.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

i2c: xiic: Wiederherstellung des nicht verwalteten Runtime-PM zur Behebung der clk-WARN-Meldungsschwemme

Die Umstellung auf devres ersetzte manuelle Aufrufe von pm_runtime_enable()/disable() durch devm_pm_runtime_set_active_enabled() und ließ den Teardown des Runtime-PM zum Entfernungszeitpunkt (remove-time) weg. Der verwaltete Release-Vorgang führt einen Runtime-PM-Teardown in der falschen Reihenfolge aus: Er ruft pm_runtime_dont_use_autosuspend() vor pm_runtime_disable() auf, d.h., während das Runtime-PM noch aktiviert ist, und da devres LIFO (Last-In-First-Out) arbeitet, wird die Freigabe von devm_clk_get_enabled() danach ausgeführt.

Beim Aufruf von remove() hinterlässt pm_runtime_put_sync() das Gerät im aktiven Zustand mit einem armen Autosuspend-Timer. Das Löschen von use_autosuspend bewirkt dann, dass rpm_idle() sofort in den Ruhezustand wechselt und xiic_i2c_runtime_suspend() die Uhr (clk) über clk_disable() deaktiviert. Die spätere Freigabe durch devm_clk_get_enabled() führt zu clk_disable_unprepare() für die bereits deaktivierte Uhr, wodurch bei jedem Teardown eine WARN-Meldung („clkN already disabled“) von clk_core_disable() ausgegeben wird.

Der verwaltete Hilfsroutinen-Code wurde entfernt und das nicht verwaltete Runtime-PM-Einrichtungs- sowie -Teardown-Schema wiederhergestellt, sodass das Runtime-PM einmal beim probe (Initialisierung) aktiviert und einmal bei remove deaktiviert wird und der Zähler für die Uhr-Aktivierung ausgeglichen bleibt.

Die Reihenfolge des Teardowns im Remove-Vorgang wurde so angepasst, dass das Runtime-PM vor dem Herunterzählen der Nutzungszahl deaktiviert wird: pm_runtime_disable() gefolgt von pm_runtime_put_noidle() anstelle von pm_runtime_put_sync(). Wird die Zahl zuerst herabgesetzt, während autosuspend noch aktiviert ist, wird der Autosuspend-Timer arretiert. Eine Preemption vor pm_runtime_disable() lässt diesen ablaufen, das Gerät wechselt in den Ruhezustand und clk_disable() deaktiviert die Uhr, was durch den devm-Release erneut deaktiviert wird – dieselbe WARN-Meldung.

Auch die nicht verwaltete IRQ-Anforderung wurde wiederhergestellt. Die Fehlerpfade beim probe führen nun das Runtime-PM manuell über goto zurück, und ein mit devres registrierter Handler wird erst später während des devres-Unwinds freigegeben, sodass er während des manuellen Teardowns (und bei jedem zukünftigen fehlschlagenden Schritt, der danach eingefügt wird) weiterhin aktiv bliebe. Die IRQ-Anforderung erfolgt nun über request_threaded_irq() und sie wird explizit im Fehlerpfad beim probe sowie in remove freigegeben. Der Fehlerpfad beim probe löscht zudem use_autosuspend, um dem Teardown in remove zu entsprechen.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Zuständig

Linux

Reservieren

25.09.2026

Veröffentlichung

03.11.2026

Moderieren

akzeptiert

Eintrag

VDB-430243

EPSS

0.00000

KEV

nein

Aktivitäten

low

Quellen

Want to know what is going to be exploited?

We predict KEV entries!