CVE-2026-80660: hwmon: (occ) unregister sysfs devices outside occ lock

Published Aug 28, 2026
·
Updated

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

hwmon: (occ) unregister sysfs devices outside occ lock

occactive(false) and occshutdown() unregister sysfs-backed devices while occ->lock is held. hwmondeviceunregister() and sysfsremovegroup() 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:

occshutdown() hwmondeviceunregister() occshowtemp1() occupdateresponse()

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

WARNING: possible circular locking dependency detected ... (sysfslock) ... at: hwmondeviceunregister+0x12/0x30 [vulnmsv] ... (&testocc.lock) ... at: occshutdown.constprop.0+0xe/0x40 [vulnmsv] occupdateresponse.isra.0+0xb/0x20 [vulnmsv] occshowtemp1.constprop.0.isra.0+0x23/0x40 [vulnmsv] DEADLOCK

Serialize hwmon registration and removal with a separate hwmonlock. 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 hwmondeviceunregister(). Remove the driver sysfs group before taking occ->lock in occshutdown(), 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.

Affected Software

1 affected component
Linux Kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Modify the driver to avoid circular locking: remove hwmon_device_unregister() from while holding occ->lock. Instead, wait for sysfs active callbacks to drain, detach occ->hwmon while holding a stable state, drop occ->lock before calling hwmon_device_unregister(), and protect hwmon register/unregister with a separate hwmon_lock.

    Linux kernel hwmon (occ) driver Locking order = Serialize hwmon registration/removal with a separate hwmon_lock; in occ_shutdown, drain sysfs active callbacks and drop occ->lock before calling hwmon_device_unregister()

Event History

Aug 28, 2026
CVE Published
via MITRE·06:49 AM
Data Sourced
via MITRE·06:49 AM
Description

Frequently Asked Questions

1

Which systems are exposed to this locking issue?

Systems using the Linux kernel OCC hwmon driver are affected when OCC devices are deactivated or shut down while sysfs callbacks for those devices are active.

2

What conditions trigger the deadlock risk?

The risk requires concurrent activity: an OCC shutdown or occ_active(false) path holds the OCC mutex while unregistering sysfs-backed devices, and an active sysfs callback enters the OCC update path and attempts to acquire the same mutex.

3

How can the issue be detected in an affected kernel?

Lockdep can report a possible circular locking dependency involving the sysfs lock and the OCC mutex. The reported call paths include occ_shutdown(), hwmon_device_unregister(), occ_show_temp_1(), and occ_update_response().

4

What remediation is available?

The vulnerability is resolved in Linux kernel changes referenced by the listed stable kernel commits. Apply the applicable upstream or stable-kernel fix rather than relying on concurrent sysfs activity being absent.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203