---
id: CVE-2026-98656
title: 'iio: trigger: cancel reenable_work before freeing trigger'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  iio: trigger: cancel reenable_work before freeing trigger

  iio_trigger_notify_done_atomic() defers ->reenable() into
  trig->reenable_work on the system workqueue, and th…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 9020ef659885f2622cfb386cc229b6d618362895 <
    cf513df1a2c75566cdc802d9da47f62e8d6cfd18
  - >-
    Linux >= 9020ef659885f2622cfb386cc229b6d618362895 <
    e64703280ce7a23a43c27efebeb7da457c88bf5c
  - >-
    Linux >= 9020ef659885f2622cfb386cc229b6d618362895 <
    882d0011c59ff8ac15188ec9ce071399ecfa10ad
  - >-
    Linux >= 9020ef659885f2622cfb386cc229b6d618362895 <
    2a57b9246cecd5dd797a42eb310d6c8816f26d9e
  - Linux a18aeac73c0f692ba40964f5f56e182312ae843b
  - Linux 2c5c948451d57596640b20887b06b523d376eb24
  - Linux >= 5.15.17 < 5.16
  - Linux >= 5.16.3 < 5.17
  - Linux 5.17
published: '2026-10-18'
updated: '2026-10-18'
sourceUpdated: '2026-10-18T15:44:07.883Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-98656'
references:
  - url: 'https://git.kernel.org/stable/c/cf513df1a2c75566cdc802d9da47f62e8d6cfd18'
  - url: 'https://git.kernel.org/stable/c/e64703280ce7a23a43c27efebeb7da457c88bf5c'
  - url: 'https://git.kernel.org/stable/c/882d0011c59ff8ac15188ec9ce071399ecfa10ad'
  - url: 'https://git.kernel.org/stable/c/2a57b9246cecd5dd797a42eb310d6c8816f26d9e'
tags:
  - cve.org
ingestedAt: '2026-10-18T16:47:32.537Z'
---

## Overview

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

iio: trigger: cancel reenable_work before freeing trigger

iio_trigger_notify_done_atomic() defers ->reenable() into
trig->reenable_work on the system workqueue, and the worker dereferences
the owning trigger through container_of().  Nothing cancels this work
before iio_trig_release() frees the trigger, so a worker armed by the
last in-flight IRQ can outlive the free and touch freed memory.

Cancel it at the top of iio_trig_release(), which every free path
reaches through the device core's final put_device().

Found by an in-house static analysis tool.

## Affected

- `Linux >= 9020ef659885f2622cfb386cc229b6d618362895 < cf513df1a2c75566cdc802d9da47f62e8d6cfd18`
- `Linux >= 9020ef659885f2622cfb386cc229b6d618362895 < e64703280ce7a23a43c27efebeb7da457c88bf5c`
- `Linux >= 9020ef659885f2622cfb386cc229b6d618362895 < 882d0011c59ff8ac15188ec9ce071399ecfa10ad`
- `Linux >= 9020ef659885f2622cfb386cc229b6d618362895 < 2a57b9246cecd5dd797a42eb310d6c8816f26d9e`
- `Linux a18aeac73c0f692ba40964f5f56e182312ae843b`
- `Linux 2c5c948451d57596640b20887b06b523d376eb24`
- `Linux >= 5.15.17 < 5.16`
- `Linux >= 5.16.3 < 5.17`
- `Linux 5.17`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
