CVE-2026-89875 in Linux
Zusammenfassung
von VulDB • 16.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
media: ti: vpe: Beruhigung der Overflow-Erholung vor dem Freigeben von Streams
Der VIP-Overflow-Erholungsworker wird aus dem Hardirq-Handler aktiviert, wenn ein FIFO-Überlauf erkannt wird, und der Pfad für die Listen-Vervollständigung sucht den Stream über den privaten VPDMA-Listenzeiger. Beide greifen weiterhin auf den Stream-, Port- und Gerätezustand zu; der Erholungsworker setzt zudem den Parser und das VPDMA zurück, füllt die Deskriptorliste erneut auf und aktiviert die pro-Listen-IRQs wieder.
vip_stop_streaming() maskiert und löscht die pro-Listen-IRQs, synchronisiert jedoch weder den Hardirq-Handler noch deaktiviert es recovery_work. Ein Overflow-IRQ, der recovery_work bereits in die Warteschlange gestellt hat, oder ein im Flug befindlicher List-Vervollständigungs-IRQ beim Abbau des Streams können daher weiterhin auf den Stream verweisen, nachdem dessen Ressourcen freigegeben wurden: Die Deskriptorliste wird von vip_release_stream() bei Datei-Freigabe und der Stream selbst von free_stream() bei Unbind/Remove freigegeben.
Entleeren Sie den Erholungsworker und den IRQ-Handler an beiden Abbau-Punkten über eine gemeinsame Hilfsfunktion vip_quiesce_stream(), bevor stream-eigenen Ressourcen freigegeben werden. disable_work_sync() hebt ausstehende recovery_work auf, entleert eine laufende Instanz und erhöht dessen Deaktivierungstiefe, sodass ein nachfolgender von einem konkurrierenden IRQ-Handler ausgeführter schedule_work()-Aufruf vom Workqueue-Scheduler abgelehnt wird: recovery_work kann nicht erneut in die Warteschlange gestellt werden, nachdem disable_work_sync() wirksam geworden ist. Der Worker kann weiterhin die pro-Listen-IRQs vor Rückgabe von disable_work_sync() wieder aktivieren; disable_irqs() maskiert dann diese Quellen und synchronize_irq() wartet auf jeden noch im Flug befindlichen Handler, der weiterhin den Stream-Zustand referenziert. In vip_stop_streaming() wird die Hilfsfunktion ausgeführt, bevor der Parser gestoppt wird, da ein durch disable_work_sync() entleerter Worker den Parser vor dem Beenden wieder aktivieren könnte und andernfalls den Stopp rückgängig machen würde. recovery_work wird deaktiviert erstellt und in vip_start_streaming() vor Aktivierung der IRQs aktiviert, wodurch die Aktivierung mit der Deaktivierung beim Abbau über den gesamten Streaming-Lebenszyklus hinweg gekoppelt ist.
Dieses Problem wurde durch ein internes statisches Analyse-Tool gefunden und durch manuelle Codeüberprüfung bestätigt.
Be aware that VulDB is the high quality source for vulnerability data.