High · published April 22, 2026
In the Linux kernel, the following vulnerability has been resolved:
spi: spi-fsl-lpspi: fix teardown order issue (UAF)
There is a teardown order issue in the driver. The SPI controller is
registered using devm_spi_register_controller(), which delays
unregistration of the SPI controller until after the fsl_lpspi_remove()
function returns.
As the fsl_lpspi_remove() function synchronously tears down the DMA
channels, a running SPI transfer triggers the following NULL pointer
dereference due to use after free:
| fsl_lpspi 42550000.spi: I/O Error in DMA RX
| Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
[...]
| Call trace:
| fsl_lpspi_dma_transfer+0x260/0x340 [spi_fsl_lpspi]
| fsl_lpspi_transfer_one+0x198/0x448 [spi_fsl_lpspi]
| spi_transfer_one_message+0x49c/0x7c8
| __spi_pump_transfer_message+0x120/0x420
| __spi_sync+0x2c4/0x520
| spi_sync+0x34/0x60
| spidev_message+0x20c/0x378 [spidev]
| spidev_ioctl+0x398/0x750 [spidev]
[...]
Switch from devm_spi_register_controller() to spi_register_controller() in
fsl_lpspi_probe() and add the corresponding spi_unregister_controller() in
fsl_lpspi_remove().
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 4.10.1, < 5.10.253 | 5.10.253 |
| linux/linux_kernel | ≥ 5.11, < 5.15.203 | 5.15.203 |
| linux/linux_kernel | ≥ 5.16, < 6.1.168 | 6.1.168 |
| linux/linux_kernel | ≥ 6.2, < 6.6.131 | 6.6.131 |
| linux/linux_kernel | ≥ 6.7, < 6.12.80 | 6.12.80 |
| linux/linux_kernel | ≥ 6.13, < 6.18.21 | 6.18.21 |
| linux/linux_kernel | ≥ 6.19, < 6.19.11 | 6.19.11 |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |