CVE-2026-31489Linux内核中的spi: meson-spicc驱动存在双重释放漏洞。由于meson_spicc_probe函数使用devm_spi_register_controller注册控制器,资源管理机制已自动处理了控制器的引用释放。但在meson_spicc_remove函数中错误地再次调用了spi_controller_put,导致引用计数被错误减少,引发双重释放,可能造成系统崩溃或权限提升。
该漏洞源于Linux内核drivers/spi/spi-meson-spicc.c驱动文件中的引用计数管理错误。在meson_spicc_probe函数中,开发者使用了devm_spi_register_controller()来注册SPI控制器。该函数利用了内核的devres(managed device resources)机制,确保在设备分离或驱动卸载时自动释放控制器资源。然而,在meson_spicc_remove函数中,代码显式调用了spi_controller_put()来手动释放控制器。由于devres机制稍后也会自动执行释放操作,这导致了spi_controller结构的引用计数被过度递减。攻击者可通过本地低权限触发设备移除流程,导致内核内存被双重释放,进而可能引发内核崩溃或利用释放后重用(UAF)进行权限提升。