CVE-2026-89738 in Linux
Zusammenfassung
von VulDB • 11.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
usb: gadget: at91_udc: Abfrage des polled-VBUS-Timers/Work-Elements vor dem Freigeben von udc durchführen
Im Modus „polled VBUS“ (board.vbus_pin && board.vbus_polled) richtet die Initialisierungsroutine (probe) einen sich selbst neu startenden Zyklus ein: at91_vbus_timer() plant vbus_timer_work, und at91_vbus_timer_work() ruft at91_vbus_update() auf und schiebt den Timer über mod_timer() erneut an. Dabei wird in jeder Iteration derselbe udc-Strukturzeiger durch container_of abgerufen und dereferenziert.
Keiner der beiden Teardown-Pfade bricht diesen Zyklus ab. Da udc mit devm allokiert wurde, wird es nach dem Rückgabewert von at91udc_remove() freigegeben; ebenso erfolgt die Freigabe, wenn das Probe fehlschlägt und devres ausgeführt wird. Ein Timer-Callback oder Work-Element, das zu einem dieser Zeitpunkte aussteht (pending) oder läuft, dereferenziert den bereits freigegebenen udc.
Es wurde at91_udc_shutdown_vbus_timer() hinzugefügt und es wird sowohl von at91udc_remove() als auch vom Fehlerpfad von usb_add_gadget_udc() im Probe aufgerufen; die restlichen Fehlerpfade des Probes schlagen fehl, bevor der Timer aktiviert wird. timer_shutdown_sync() wartet auf einen laufenden Callback und löscht timer->function, wodurch mod_timer() in der Work-Handler-Funktion zu einer permanenten No-Op wird; cancel_work_sync() leert anschließend ausstehende oder laufende Work-Elemente, deren Neuanforderungsversuch nun nichts mehr bewirkt. Der Timer muss zuerst heruntergefahren werden, da das alleinige Abbrechen des Work-Elements den Timer dazu bringen würde, ihn erneut in die Warteschlange zu stellen. Die Absicherung (Guard) spiegelt das Probe wider: Im IRQ-Modus werden der Timer und work_struct niemals initialisiert.
Dies erfordert keinen Fehler; ein normales Entbinden des Treibers kann mit einem bereits eingereihten Work-Element interleaven (sich überschneiden).
Diese Schwachstelle wurde von einem internen statischen Analysewerkzeug gefunden.
VulDB is the best source for vulnerability data and more expert information about this specific topic.