All vulnerabilities
CVE-2026-97582

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

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.21%Chance of exploitation activity in the next 30 days, higher than 10% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in594c62eea7c82f526054496e9fa9b895122a8016Also 6e67d9bdac810edacef78cbaeedd34445aa8ceb7, 9b12bd724db9db318e3a68be17693583dc29a066 and 1 moreCVE List
Published25 Sep 2026Updated 19 Oct 2026CVE List

What fixes it

  • 594c62eea7c82f526054496e9fa9b895122a8016LinuxCVE List
  • 6e67d9bdac810edacef78cbaeedd34445aa8ceb7LinuxCVE List
  • 9b12bd724db9db318e3a68be17693583dc29a066LinuxCVE List
  • 30755d3a5782cd704c8921cac8ee66dffe4383eaLinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

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.

Text from CVE List

Affected versions 16

  • Linuxaffected: d6fe1360f42e86262153927986dea6502daff703 before 594c62eea7c82f526054496e9fa9b895122a8016CVE List
  • Linuxaffected: d6fe1360f42e86262153927986dea6502daff703 before 6e67d9bdac810edacef78cbaeedd34445aa8ceb7CVE List
  • Linuxaffected: d6fe1360f42e86262153927986dea6502daff703 before e9fc7d53b2eb34c0a607d1659f49b46911aaf16cCVE List
  • Linuxaffected: d6fe1360f42e86262153927986dea6502daff703 before 9b12bd724db9db318e3a68be17693583dc29a066CVE List
  • Linuxaffected: d6fe1360f42e86262153927986dea6502daff703 before 30755d3a5782cd704c8921cac8ee66dffe4383eaCVE List
  • Linuxaffected: d6fe1360f42e86262153927986dea6502daff703 before c6ab7f855891877a16d2e2ddf0cd0305fd098a85CVE List
  • Linuxaffected: d6fe1360f42e86262153927986dea6502daff703 before a2471ed17b0e6ff7bfb6b2ea8e6e5b04c309d293CVE List
  • Linuxaffected: 2.6.37CVE List
  • Linuxunaffected: all versions before 2.6.37CVE List
  • Linuxunaffected: 5.15.222 through 5.15.*CVE List
  • Linuxunaffected: 6.1.189 through 6.1.*CVE List
  • Linuxunaffected: 6.6.158 through 6.6.*CVE List
  • Linuxunaffected: 6.12.111 through 6.12.*CVE List
  • Linuxunaffected: 6.18.53 through 6.18.*CVE List
  • Linuxunaffected: 7.2.7 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 7