CVE-2026-89938

iio: chemical: atlas-sensor: use iio_trigger_poll_nested() to fix remove UAF

State
Published
Severity
7.8 High
Published
Sep 16, 2026
Updated
Oct 19, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

Description

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.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 7103b99b031cb0ff6979331757bfc4893f37ae9e to before f64b437641b5a70c18bb0fd38da2b69d8926c871Affected
  • 7103b99b031cb0ff6979331757bfc4893f37ae9e to before 91e12b0fbd7047d02bf4ef4dbc491b9ef0159250Affected
  • 7103b99b031cb0ff6979331757bfc4893f37ae9e to before 2071624c3d0f497ca91da78858e6f30d7112fea6Affected
  • 7103b99b031cb0ff6979331757bfc4893f37ae9e to before 30b0d44c978bbc857bd68b71dab371805653de70Affected
  • 7103b99b031cb0ff6979331757bfc4893f37ae9e to before be61c8c6252671ecf1fee0ad90f87669e0be1e20Affected
LinuxLinux
  • 4.8Affected
  • before 4.8Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.110 through 6.12.*Not affected
  • 6.18.51 through 6.18.*Not affected
  • 7.2.5 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.