HIGH Introduced in 4.8
iio AtlasSensor UAF
CVE-2026-89938
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI6.3MEDIUM
01Description
In the Linux kernel, the following vulnerability has been resolved: iio: chemical: atlas-sensor: use iio_trigger_poll_nested() to fix remove UAF The atlas driver requests its hardware data-ready IRQ with devm_request_threaded_irq(); its threaded handler queues an irq_work, atlas_work_handler(), that calls iio_trigger_poll(data->trig). The IRQ is devm-managed, so free_irq() runs from the devres unwind after atlas_remove() returns without flushing that irq_work. Once a buffer is enabled, conversion-complete IRQs keep firing and queueing it; a pending irq_work can therefore run after the unwind has freed atlas_data/indio_dev and the trigger, when atlas_work_handler() derives the atlas_data pointer via container_of() and dereferences data->trig, a use-after-free. Call iio_trigger_poll_nested() directly from the threaded handler instead of bouncing through irq_work. free_irq() then drains the threaded handler, closing the window; other iio drivers with a threaded data-ready IRQ do the same (e.g. bmi270). This issue was found by an in-house static analysis tool.
02KernelScan AI Analysis
Risk summary
A use-after-free in the Atlas IIO chemical sensor driver allows a local attacker to trigger a race condition during device removal, potentially leading to kernel memory corruption. The vulnerability requires the specific hardware or driver to be loaded and a buffer to be enabled, limiting exposure to systems with Atlas sensors.
Vulnerability analysis
A use-after-free occurs in the Atlas chemical sensor driver when a pending background task runs after the device has been removed and its associated memory freed. The fix processes data-ready notifications directly in the interrupt handler thread instead of deferring them to separate work, so device removal waits for the handler to finish and closes the race window. The vulnerability is reachable locally by a privileged user with access to the sensor device, but requires the specific Atlas hardware to be present and its buffer to be enabled.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.6 | 4.8 | 6.6.157 | f64b437641b5 |
| 6.18 | 4.8 | 6.18.51 | 2071624c3d0f |
| 7.2 | 4.8 | 7.2.5 | 30b0d44c978b |
| mainline | 4.8 | 7.3-rc1 | be61c8c62526 |
| 6.12 | 4.8 | 6.12.110 | 91e12b0fbd70 |
| cip/6.12 | 4.8 | 6.12.111-cip32 | 91e12b0fbd70 |