-

CVE-2026-80660

hwmon: (occ) unregister sysfs devices outside occ lock

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

hwmon: (occ) unregister sysfs devices outside occ lock

occ_active(false) and occ_shutdown() unregister sysfs-backed devices while
occ->lock is held.  hwmon_device_unregister() and sysfs_remove_group() can
wait for active sysfs callbacks to drain, and those callbacks can enter the
OCC update path and try to take occ->lock again.  That gives the unregister
paths the lock ordering occ->lock -> sysfs callback drain, while a callback
has the opposite edge sysfs callback -> occ->lock.

This issue was found by our static analysis tool and then manually
reviewed against the current tree.

The grounded PoC kept the real unregister and callback carrier:

  occ_shutdown()
  hwmon_device_unregister()
  occ_show_temp_1()
  occ_update_response()

Lockdep reported the circular dependency with occ_shutdown() already
holding the OCC mutex and hwmon_device_unregister() waiting on the sysfs
side:

  WARNING: possible circular locking dependency detected
  ... (sysfs_lock) ... at: hwmon_device_unregister+0x12/0x30 [vuln_msv]
  ... (&test_occ.lock) ... at: occ_shutdown.constprop.0+0xe/0x40 [vuln_msv]
  occ_update_response.isra.0+0xb/0x20 [vuln_msv]
  occ_show_temp_1.constprop.0.isra.0+0x23/0x40 [vuln_msv]
  *** DEADLOCK ***

Serialize hwmon registration and removal with a separate hwmon_lock.
Under that lock, detach occ->hwmon and update occ->active while occ->lock
is held so concurrent OCC state changes still see a stable state, then
drop occ->lock before calling hwmon_device_unregister().  Remove the
driver sysfs group before taking occ->lock in occ_shutdown(), so draining
the driver attributes cannot wait while the OCC mutex is held.  Also make
OCC update callbacks return -ENODEV after deactivation, so callbacks that
already passed sysfs active protection do not poll the hardware after
teardown has detached the hwmon device.
Daten sind bereitgestellt durch das CVE Programm von einer CVE Numbering Authority (CNA) (Unstrukturiert).
HerstellerLinux
≫
Produkt Linux
Default Statusunaffected
Version 849b0156d9960da628a06756bb920d9571c15e66
Version < 2a4c80ff3571498ec6a916273304b6650026b1b0
Status affected
Version 849b0156d9960da628a06756bb920d9571c15e66
Version < e7fd81e9fb1fe476d2131fec66c1138457810ed4
Status affected
Version 849b0156d9960da628a06756bb920d9571c15e66
Version < 2092952f22a7da98e76e84139ae202b1fc7ba899
Status affected
Version 849b0156d9960da628a06756bb920d9571c15e66
Version < f0aad157576da199c146c1bb266442befa7912ca
Status affected
Version 849b0156d9960da628a06756bb920d9571c15e66
Version < 7ee43ec8e6774774abbe9dc3027225e01bc964a5
Status affected
Version 849b0156d9960da628a06756bb920d9571c15e66
Version < e31408734332b8cc611342cdaaab6ba492180156
Status affected
Version bc8a32726774286325b0cb0daab55b682cafc1ef
Status affected
Version 5.15.216
Version < 5.16
Status affected
HerstellerLinux
≫
Produkt Linux
Default Statusaffected
Version 5.19
Status affected
Version 0
Version < 5.19
Status unaffected
Version <= 6.1.*
Version 6.1.178
Status unaffected
Version <= 6.6.*
Version 6.6.145
Status unaffected
Version <= 6.12.*
Version 6.12.97
Status unaffected
Version <= 6.18.*
Version 6.18.40
Status unaffected
Version <= 7.1.*
Version 7.1.5
Status unaffected
Version <= *
Version 7.2
Status unaffected
VulnDex Vulnerability Enrichment
Diese Information steht angemeldeten Benutzern zur Verfügung. Login Login
Zu dieser CVE wurde keine Warnung gefunden.
EPSS Metriken
Typ Quelle Score Percentile
EPSS FIRST.org 0.17% 0.068
CVSS Metriken
Quelle Base Score Exploit Score Impact Score Vector String
Es wurden noch keine Informationen zu CWE veröffentlicht.
https://git.kernel.org/stable/c/2a4c80ff3571498ec6a916273304b6650026b1b0
https://git.kernel.org/stable/c/e7fd81e9fb1fe476d2131fec66c1138457810ed4
https://git.kernel.org/stable/c/2092952f22a7da98e76e84139ae202b1fc7ba899
https://git.kernel.org/stable/c/f0aad157576da199c146c1bb266442befa7912ca
https://git.kernel.org/stable/c/7ee43ec8e6774774abbe9dc3027225e01bc964a5
https://git.kernel.org/stable/c/e31408734332b8cc611342cdaaab6ba492180156