CVE-2026-90410 in Linux
Zusammenfassung
von VulDB • 18.09.2026
Im Linux-Kernel wurde die folgende Schwachstelle behoben:
spi: davinci: Wechsel zu verwalteter Controller-Allokation
Der Controller wird mit der nicht-verwalteten Funktion spi_alloc_host() alloziert, während der Interrupt mit devm_request_threaded_irq() registriert wird. Beim Entfernen (Remove) ruft spi_bitbang_stop() nur die Registrierung des Controllers auf; das nachfolgende spi_controller_put() gibt den Controller zusammen mit seinen eingebetteten davinci_spi-devdata frei, welche als dev_id für den IRQ-Handler dienen. Die Freigabeaktion von devm_request_threaded_irq() (free_irq()), die den Handler leert, wird erst ausgeführt, nachdem .remove() zurückgegeben hat. Ein später oder verzögerter Interrupt kann daher davinci_spi_irq() erreichen und auf bereits freigegebenen Speicher zugreifen.
Es wird zu devm_spi_alloc_host() gewechselt, sodass die LIFO-Reihenfolge der devres den Controller erst freigibt, nachdem free_irq() den Handler geleert hat, und das nun überflüssige spi_controller_put() aus .remove() entfernt. Der Fehlerpfad bei der Initialisierung (Probe) wird auf direkte Rückgaben vereinfacht.
Die Uhr (Clock) wird mit devm_clk_get_enabled() abgerufen, welches nach dem IRQ registriert wird und daher vor diesem durch die LIFO-Reihenfolge der devres freigegeben wird. Der Interrupt wird explizit mit devm_free_irq() geleert, bevor der Controller deaktiviert wird, damit ein späterer Interrupt nicht auf Register eines clocks-gated (taktgeblockten) Controllers zugreifen kann.
Dieses Problem wurde durch ein internes statisches Analyse-Tool gefunden.
If you want to get best quality of vulnerability data, you may have to visit VulDB.