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

block: skip sync_blockdev() on surprise removal in bdev_mark_dead()

bdev_mark_dead()'s @surprise == true means the device is already gone.
The filesystem callback fs_bdev_mark_dead() honours this and skips
sync_filesystem(), but the bare block device path (no ->mark_dead op)
lost its !surprise guard when the holder ->mark_dead callback was wired
up (see Fixes), and now calls sync_blockdev() unconditionally, which can
hang forever waiting on writeback that can no longer complete.

syzkaller hit this via nvme_reset_work()'s "I/O queues lost" path:
nvme_mark_namespaces_dead() -> blk_mark_disk_dead() ->
bdev_mark_dead(bdev, true) -> sync_blockdev() blocks in
folio_wait_writeback(), wedging the reset worker and every task waiting
on it.

Skip the sync on surprise removal, matching fs_bdev_mark_dead();
invalidate_bdev() still runs. Orderly removal (surprise == false) is
unchanged.

Found by FuzzNvme(Syzkaller with FEMU fuzzing framework).
Published: 2026-07-25
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Linux kernel contains a flaw in the block layer where the function bdev_mark_dead() incorrectly calls sync_blockdev() when a device is removed in surprise mode. This unconditional sync waits indefinitely on writeback that can never complete, causing the reset worker to hang and any tasks waiting on it to block. The issue does not corrupt memory or grant privileged access; it simply renders the system unresponsive when a surprise removal occurs, such as during an NVMe reset.

Affected Systems

All Linux kernel builds from the core distribution that have not yet incorporated the recent patch to bdev_mark_dead() are vulnerable. The flaw is present in the generic Linux kernel regardless of vendor or distribution, so any system using an unpatched kernel version prior to the fix can be affected.

Risk and Exploitability

The EPSS score is below 1%, indicating a low probability of exploitation. The vulnerability is not listed in CISA’s KEV catalog. Exploitation requires an operation that triggers an NVMe reset or similar surprise device removal path, which typically is limited to local or privileged users. An attacker would need sufficient privileges to force a surprise removal of a block device, after which the kernel would hang, resulting in a denial‑of‑service condition.

Generated by OpenCVE AI on August 3, 2026 at 19:13 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that includes the bdev_mark_dead() surprise removal fix.
  • If an update is not immediately available, consider disabling NVMe reset functionality or otherwise preventing calls to bdev_mark_dead() with surprise=true as a temporary workaround.
  • Monitor kernel logs and system responsiveness for hangs in reset workers or anomalies in block device removal, and apply the patch as soon as it becomes available.

Generated by OpenCVE AI on August 3, 2026 at 19:13 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4724-1 linux-6.12 new package
History

Thu, 30 Jul 2026 04:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-404
CWE-590
CWE-667

Wed, 29 Jul 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-390
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Sun, 26 Jul 2026 02:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-404
CWE-590
CWE-667

Sat, 25 Jul 2026 09:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: block: skip sync_blockdev() on surprise removal in bdev_mark_dead() bdev_mark_dead()'s @surprise == true means the device is already gone. The filesystem callback fs_bdev_mark_dead() honours this and skips sync_filesystem(), but the bare block device path (no ->mark_dead op) lost its !surprise guard when the holder ->mark_dead callback was wired up (see Fixes), and now calls sync_blockdev() unconditionally, which can hang forever waiting on writeback that can no longer complete. syzkaller hit this via nvme_reset_work()'s "I/O queues lost" path: nvme_mark_namespaces_dead() -> blk_mark_disk_dead() -> bdev_mark_dead(bdev, true) -> sync_blockdev() blocks in folio_wait_writeback(), wedging the reset worker and every task waiting on it. Skip the sync on surprise removal, matching fs_bdev_mark_dead(); invalidate_bdev() still runs. Orderly removal (surprise == false) is unchanged. Found by FuzzNvme(Syzkaller with FEMU fuzzing framework).
Title block: skip sync_blockdev() on surprise removal in bdev_mark_dead()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-07-25T08:49:54.327Z

Reserved: 2026-07-19T15:36:31.780Z

Link: CVE-2026-64326

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-07-25T10:17:14.207

Modified: 2026-08-11T15:00:57.447

Link: CVE-2026-64326

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-07-25T00:00:00Z

Links: CVE-2026-64326 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T19:15:04Z

Weaknesses
  • CWE-390

    Detection of Error Condition Without Action