---
id: CVE-2026-80677
title: |-
  In the Linux kernel, the following vulnerability has been resolved:

  driver core: use READ_ONCE() for dev->driver in dev_has_sync_state()

  dev_has_sync_state() reads dev->driver twice without holding
  device_lock() -- once for the NULL ch…
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  driver core: use READ_ONCE() for dev->driver in dev_has_sync_state()

  dev_has_sync_state() reads dev->driver twice without holding
  device_lock() -- once for the NULL ch…
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
published: '2026-08-28'
updated: '2026-08-29'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-80677'
references:
  - url: 'https://git.kernel.org/stable/c/358697929351f619143f59c6a8a15a4994748b79'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/51b3e1de53ee5b7775c7ff90e67fdb2665fce938'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/5e79e0180515b31b2e2244dc3d256fd8b5a07021'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/860885fcd2611bca8c28dac8b2c1c7ff160f763e'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/89789e4c141904506163dcb91c7289a074573931'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/9b0f4082a09760939588135d60a8e9cc994bfa3e'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/cc77f0d91e3214e4292208f02a1dc09a31f9aac7'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/e9506871a8ea304cde48ff4a57226df2aadddae3'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
epss: 0.00129
epssPercentile: 0.02904
ingestedAt: '2026-08-30T04:47:10.289Z'
---

## Overview

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

driver core: use READ_ONCE() for dev->driver in dev_has_sync_state()

dev_has_sync_state() reads dev->driver twice without holding
device_lock() -- once for the NULL check and once to dereference
->sync_state. Some callers only hold device_links_write_lock, which
doesn't prevent a concurrent unbind from clearing dev->driver via
device_unbind_cleanup().

Fix it by reading dev->driver exactly once with READ_ONCE(), pairing
with the WRITE_ONCE() in device_set_driver().

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
