CVE-2026-80677 Overview
CVE-2026-80677 is a race condition vulnerability in the Linux kernel's driver core subsystem. The flaw resides in dev_has_sync_state(), which reads dev->driver twice without holding device_lock(). One read performs a NULL check while the second dereferences ->sync_state. Callers that only hold device_links_write_lock cannot prevent a concurrent unbind operation from clearing dev->driver via device_unbind_cleanup(). The upstream fix reads dev->driver exactly once using READ_ONCE(), paired with a matching WRITE_ONCE() in device_set_driver().
Critical Impact
A local, low-privileged attacker can trigger a race window between driver binding and unbinding, potentially causing kernel memory corruption or use-after-free conditions affecting confidentiality, integrity, and availability.
Affected Products
- Linux kernel (mainline and stable branches prior to the fix commits)
- Linux distributions shipping vulnerable kernel versions
- Systems with dynamic device driver binding/unbinding enabled
Discovery Timeline
- 2026-08-28 - CVE-2026-80677 published to NVD
- 2026-08-29 - Last updated in NVD database
Technical Details for CVE-2026-80677
Vulnerability Analysis
The vulnerability is a TOCTOU (Time-of-Check Time-of-Use) race condition in the Linux kernel driver core. The function dev_has_sync_state() reads the dev->driver pointer twice without proper locking. Between the NULL check and the subsequent dereference of the ->sync_state member, a concurrent thread executing an unbind operation can clear dev->driver through device_unbind_cleanup(). This creates a window where the pointer transitions from non-NULL to NULL, causing the second read to dereference a stale or NULL value.
The issue affects kernel paths that hold only device_links_write_lock, which does not serialize against driver unbinding. Because driver binding state can change asynchronously, any code path assuming stability of dev->driver across multiple reads is unsafe.
Root Cause
The root cause is missing memory access ordering on a shared pointer that can be mutated concurrently. The compiler is free to reload dev->driver between the two source-level reads, and no lock protects the field during the check-then-use sequence. The fix uses READ_ONCE() to force a single load and pairs it with WRITE_ONCE() in device_set_driver() to enforce atomic publication of updates.
Attack Vector
Exploitation requires local access with the ability to trigger driver binding and unbinding operations, typically through sysfs interfaces such as /sys/bus/*/drivers/*/bind and unbind. An attacker races driver unbind against operations that traverse device links referencing sync_state callbacks. Successful timing can cause a NULL pointer dereference or use of a partially cleared driver structure inside kernel context. The vulnerability requires low privileges but the local attack vector limits remote exploitation.
No verified public proof-of-concept code is available. Technical details are documented in the upstream commits referenced in the Linux stable kernel repository.
Detection Methods for CVE-2026-80677
Indicators of Compromise
- Unexpected kernel oops or panic messages referencing dev_has_sync_state, device_links_write_lock, or sync_state in dmesg and /var/log/kern.log
- Kernel crash dumps showing NULL pointer dereferences in the driver core subsystem during device probe or removal events
- Repeated userspace writes to /sys/bus/*/drivers/*/bind and unbind from non-administrative processes
Detection Strategies
- Monitor kernel logs for stack traces involving device_unbind_cleanup() or sync_state callback failures.
- Audit process activity for unprivileged users invoking driver binding operations via sysfs.
- Track kernel version and patch level across the fleet to identify hosts running unpatched builds.
Monitoring Recommendations
- Enable kdump or equivalent crash-capture mechanisms to preserve forensic data from kernel panics.
- Forward auditd events for writes to /sys/bus and /sys/devices paths to a centralized logging platform.
- Baseline normal driver bind/unbind activity so anomalous frequency or timing patterns can be flagged.
How to Mitigate CVE-2026-80677
Immediate Actions Required
- Apply the upstream Linux kernel patches referenced in the CVE advisory to all affected systems.
- Inventory Linux hosts and identify kernels lacking the READ_ONCE() fix in dev_has_sync_state().
- Restrict local shell access on multi-tenant systems until patches are deployed.
Patch Information
The fix is available in multiple stable kernel branches through the following commits: 3586979, 51b3e1d, 5e79e01, 860885f, 89789e4, 9b0f408, cc77f0d, and e950687. Consult your Linux distribution's security advisories for backported kernel builds and reboot systems after installation.
Workarounds
- Remove write permissions from /sys/bus/*/drivers/*/bind and unbind for non-root users where feasible.
- Disable dynamic driver unbinding on systems that do not require hot-plug functionality.
- Reduce local attack surface by limiting SSH and console access to trusted administrators until patched kernels are deployed.
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

