CVE-2026-90311

thermal: hwmon: Remove hwmon class device along with its parent

State
Published
Severity
Not scored
Published
Sep 17, 2026
Updated
Oct 30, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

Description

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

thermal: hwmon: Remove hwmon class device along with its parent

The current code creates one hwmon device per thermal zone type and that device is registered under the first thermal zone of the given type.

That turns out to be problematic when the thermal zone holding the hwmon device is removed.

For example, say that there are two ACPI thermal zones on a system

/sys/devices/virtual/thermal/thermal_zone0/ /sys/devices/virtual/thermal/thermal_zone1/

The current code registers a hwmon class device for thermal_zone0 only:

/sys/devices/virtual/thermal/thermal_zone0/hwmon0/

because the type is "acpitz" for both of them, but it adds a sysfs attribute that belongs to thermal_zone1 under it:

/sys/devices/virtual/thermal/thermal_zone0/hwmon0/temp2_input

There is also

/sys/devices/virtual/thermal/thermal_zone0/hwmon0/temp1_input

which belongs to thermal_zone0.

When thermal_zone0 is removed, say because the ACPI thermal driver is unbound from the underlying platform device, thermal_remove_hwmon_sysfs() skips the removal of hwmon0 because of the temp2_input attribute belonging to thermal_zone1 which effectively prevents thermal_zone0 removal from making progress.

Address this by making thermal_remove_hwmon_sysfs() remove the entire hwmon class device interface for the given thermal zone type when the thermal zone device holding it is removed.

To prevent races with thermal_add_hwmon_sysfs() that may interfere with this, carry out the entire addition and removal of hwmon sysfs interfaces for thermal zones under thermal_hwmon_list_lock.

Also adjust the layout of the labels in thermal_add_hwmon_sysfs() to the current kernel coding style to align with the new "unlock" label.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • f6b6b52ef7a54160c0a4d2b56a58f84a2e5b33c5 to before e67dad2cff9e4fedce69e752d515ef651d745a90Affected
  • f6b6b52ef7a54160c0a4d2b56a58f84a2e5b33c5 to before df002834cfd880b800fa607135e4bb2e403ce187Affected
  • f6b6b52ef7a54160c0a4d2b56a58f84a2e5b33c5 to before 23094544b8e8c43909fd61ca8866ecfe38093ae8Affected
  • f6b6b52ef7a54160c0a4d2b56a58f84a2e5b33c5 to before 9b405b3e7e131ee85dd78b9cc951b41f0828a333Affected
  • f6b6b52ef7a54160c0a4d2b56a58f84a2e5b33c5 to before 4fa8915f40f744c6db2a3c25b2ae7d2dd64c77b4Affected
  • f6b6b52ef7a54160c0a4d2b56a58f84a2e5b33c5 to before 2b57e24d34b2dfc43c81942bb359d6315bf302fbAffected
LinuxLinux
  • 4.19Affected
  • before 4.19Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.114 through 6.12.*Not affected
  • 6.18.57 through 6.18.*Not affected
  • 7.2.6 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.