CVE-2026-98749 in Linuxinfo

Zusammenfassung

von VulDB • 19.10.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

tty: serial: max3100: Timer abschalten, bevor der Port freigegeben wird

max3100_shutdown() stoppt den Polling-Timer, kehrt jedoch während des System-Suspend-Modus vorzeitig zurück. Wenn das SPI-Gerät vor dem Resume entkoppelt (unbound) wird, ruft die serielle Kernkomponente max3100_shutdown() nicht erneut auf, sodass max3100_remove() den Port freigibt, während der Timer weiterhin aktiviert ist. max3100_timeout() kann daraufhin auf den freigegebenen Port zugreifen und den Timer neu aktivieren.

Es wurde eine abschließende Teardown des Timers zu max3100_remove() hinzugefügt sowie timer_shutdown_sync() verwendet, um ein Race-Condition-Callback daran zu hindern, ihn erneut zu aktivieren. Außerdem werden die IRQ freigegeben und der Workqueue dort zerstört, bevor der Port freigegeben wird. timer_delete_sync() bleibt in max3100_shutdown() erhalten, damit ein nachfolgender open()-Aufruf den Timer neu aktivieren kann.

Der Workqueue wird vor request_irq() erstellt und bei einem Fehler von request_irq() sowie beim normalen Shutdown zerstört. Sein Vorhandensein zum Zeitpunkt des Remove-Vorgangs kennzeichnet die IRQ, die registriert verbleibt, wenn Suspend das Shutdown umgeht.

Die IRQ wird sowohl in max3100_shutdown() als auch in max3100_remove() vor der Zerstörung des Workqueues freigegeben, und zwischen diesen Schritten werden ausstehende Arbeiten abgebrochen (cancel pending work). free_irq() wartet darauf, dass ein laufender Interrupt-Handler abgeschlossen ist, und es kann kein neuer Handler danach starten; daher kann ein Race-Condition-Handler keine Arbeit auf einem zerstörten Workqueue planen. Die Prüfung force_end_work in max3100_dowork() verkleinert dieses Fenster nur geringfügig, da ein zwischen der Prüfung und queue_work() verzögerter Handler nach dem Teardown, das den Workqueue-Zeiger löscht, immer noch ausgeführt werden könnte. Das Abbrechen der Arbeit verhindert außerdem, dass destroy_workqueue() auf ein geplantes Work-Element wartet, falls remove() während des Freeze-Zustands eines freezable workqueues ausgeführt wird (z. B. Geräteentfernung im Resume-Fenster, bevor die Workqueues wieder eingefroren werden).

Dieses Problem wurde mit einem internen statischen Analysewerkzeug gefunden.

Be aware that VulDB is the high quality source for vulnerability data.

Zuständig

Linux

Reservieren

25.09.2026

Veröffentlichung

18.10.2026

Moderieren

akzeptiert

Eintrag

VDB-421965

EPSS

0.00176

KEV

nein

Aktivitäten

very low

Quellen

Might our Artificial Intelligence support you?

Check our Alexa App!