---
id: CVE-2026-97582
title: |-
  In the Linux kernel, the following vulnerability has been resolved:

  hwmon: (gpio-fan) Fix use-after-free in alarm work

  fan_alarm_irq_handler() queues fan_data->alarm_work, but nothing
  cancels it
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  hwmon: (gpio-fan) Fix use-after-free in alarm work

  fan_alarm_irq_handler() queues fan_data->alarm_work, but nothing
  cancels it.  fan_alarm_notify() dereferences fan_da…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= d6fe1360f42e86262153927986dea6502daff703 <
    9b12bd724db9db318e3a68be17693583dc29a066
  - >-
    Linux >= d6fe1360f42e86262153927986dea6502daff703 <
    30755d3a5782cd704c8921cac8ee66dffe4383ea
  - >-
    Linux >= d6fe1360f42e86262153927986dea6502daff703 <
    c6ab7f855891877a16d2e2ddf0cd0305fd098a85
  - >-
    Linux >= d6fe1360f42e86262153927986dea6502daff703 <
    a2471ed17b0e6ff7bfb6b2ea8e6e5b04c309d293
  - Linux 2.6.37
published: '2026-09-25'
updated: '2026-09-25'
sourceUpdated: '2026-09-25T11:17:09.010'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-97582'
references:
  - url: 'https://git.kernel.org/stable/c/30755d3a5782cd704c8921cac8ee66dffe4383ea'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/9b12bd724db9db318e3a68be17693583dc29a066'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/a2471ed17b0e6ff7bfb6b2ea8e6e5b04c309d293'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/c6ab7f855891877a16d2e2ddf0cd0305fd098a85'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
ingestedAt: '2026-09-25T11:06:38.908Z'
---

## Overview

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

hwmon: (gpio-fan) Fix use-after-free in alarm work

fan_alarm_irq_handler() queues fan_data->alarm_work, but nothing
cancels it.  fan_alarm_notify() dereferences fan_data and its hwmon
device.  On unbind, devres frees the interrupt, which only waits for
the handler itself, and then releases the hwmon device and fan_data,
so a pending fan_alarm_notify() can run after those frees.

Replace INIT_WORK() with devm_work_autocancel(), registered before
devm_request_irq().  The devres cleanup then frees the interrupt
first, so no new work can be queued, and cancels the work while
fan_data and the hwmon device are still alive.

This issue was found by an in-house static analysis tool.

## Remediation

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