CVE-2026-90410: spi: davinci: switch to managed controller allocation

Published Sep 17, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

spi: davinci: switch to managed controller allocation

The controller is allocated with the non-managed spiallochost() while the interrupt is registered with devmrequestthreadedirq(). During removal, spibitbangstop() only unregisters the controller; the subsequent spicontrollerput() then frees the controller together with its embedded davincispi devdata, which is the IRQ handler's devid. The devmrequestthreadedirq() release action (freeirq()), which drains the handler, does not run until after .remove() returns. A late or latched interrupt can therefore reach davincispiirq() and dereference already-freed memory.

Switch to devmspiallochost() so that the devres LIFO order releases the controller only after freeirq() has drained the handler, and drop the now-redundant spicontrollerput() from .remove(). The probe error path is simplified to direct returns.

The clock is acquired with devmclkgetenabled(), which is registered after the IRQ and thus released before it by the devres LIFO order. Drain the interrupt explicitly with devmfreeirq() before disabling the controller so that a late interrupt cannot access the registers of a clock-gated controller.

This issue was found by an in-house static analysis tool.

Affected Software

1 affected component
Linux Kernel

Event History

Sep 17, 2026
CVE Published
via MITRE·04:09 PM
Data Sourced
via MITRE·04:09 PM
Description

Frequently Asked Questions

1

When does the use-after-free occur?

It occurs during device removal, after the SPI controller and its embedded driver data have been freed but before the managed IRQ release action has drained the interrupt handler. A late or already-latched interrupt can then invoke the handler with the freed driver-data pointer.

2

What systems are exposed to this condition?

Systems using the DaVinci SPI controller driver are exposed during removal of that controller. The issue depends on an interrupt arriving in the removal window; the provided information does not identify any default configuration or specific affected kernel versions.

3

What does the fix change?

The fix uses managed SPI controller allocation so that IRQ cleanup occurs before the controller is released, and explicitly drains the IRQ before the controller is disabled. It also removes the redundant controller put operation from the remove path.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203