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

fuse: fix invalidate lock leak on open O_TRUNC DAX failure

fuse_open() takes filemap_invalidate_lock() for a DAX truncate
(dax_truncate = true) and releases it before the out_inode_unlock
label. But when fuse_dax_break_layouts() fails, the goto
out_inode_unlock skips the unlock and leaks the rwsem, so any later
fault or truncate on the file stalls on the stale lock.

fuse_dax_break_layouts() can fail with -ERESTARTSYS when a signal
interrupts the wait for busy DAX pages to drain:

open("file", O_RDWR | O_TRUNC)
└─ fuse_open()
├─ filemap_invalidate_lock() # dax_truncate
└─ fuse_dax_break_layouts()
└─ dax_break_layout()
└─ wait_page_idle() # TASK_INTERRUPTIBLE
└─ fuse_wait_dax_page() # unlock, schedule, re-lock
└─ signal → -ERESTARTSYS
goto out_inode_unlock # <- lock leaked

Fix this by moving filemap_invalidate_unlock() below the label so
that all error paths release the lock, and rename the label to
out_unlock as it now covers more than just the inode lock.
Published: 2026-09-04
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Apply Patch
AI Analysis

Impact

fuse_open() in the Linux kernel incorrectly handles the scenario where a DAX‑truncated file operation fails due to a signal interrupt. The function acquires a filemap invalidate lock but, when fuse_dax_break_layouts() fails, the code path that releases the lock is skipped. The leaked read/write semaphore can then cause any subsequent operations, such as a fault or truncate on the file, to block indefinitely because the resource remains locked. This results in a denial of service for processes that attempt those operations.

Affected Systems

All Linux kernel distributions that include the FUSE component are affected. No specific kernel version is listed in the advisory, so the issue applies to the kernel source regardless of release.

Risk and Exploitability

The vulnerability does not appear in the CISA KEV catalog and no EPSS score is available, so the likelihood of widespread exploitation is uncertain. The flaw requires an attempt to open a FUSE‑mounted file with the O_TRUNC flag (or a similar truncate operation) while the DAX pages are busy, and it culminates in the kernel leaving a lock unreleased. An attacker with local access could trigger the failure by sending a signal during the wait, causing the lock to leak and potentially halting all subsequent open or truncate operations on that file. This can lead to service disruption for user processes and any services that rely on that file, with the impact extending across the system until the offending process exits or the machine is rebooted.

Generated by OpenCVE AI on September 4, 2026 at 19:18 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the kernel patch that ensures filemap_invalidate_lock is properly released on all exit paths, including when fuse_dax_break_layouts() fails.
  • Restart any services or processes that use the affected FUSE mounts after applying the patch to clear stale locks and recover normal operation.
  • Monitor the system for stalled open or truncate operations on FUSE mounts to verify that the patch has resolved the issue; if stalls persist, consider upgrading to a kernel version that incorporates the fix or consulting kernel maintainers.

Generated by OpenCVE AI on September 4, 2026 at 19:18 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4777-1 linux security update
History

Fri, 04 Sep 2026 19:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-668

Fri, 04 Sep 2026 16:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: fuse: fix invalidate lock leak on open O_TRUNC DAX failure fuse_open() takes filemap_invalidate_lock() for a DAX truncate (dax_truncate = true) and releases it before the out_inode_unlock label. But when fuse_dax_break_layouts() fails, the goto out_inode_unlock skips the unlock and leaks the rwsem, so any later fault or truncate on the file stalls on the stale lock. fuse_dax_break_layouts() can fail with -ERESTARTSYS when a signal interrupts the wait for busy DAX pages to drain: open("file", O_RDWR | O_TRUNC) └─ fuse_open() ├─ filemap_invalidate_lock() # dax_truncate └─ fuse_dax_break_layouts() └─ dax_break_layout() └─ wait_page_idle() # TASK_INTERRUPTIBLE └─ fuse_wait_dax_page() # unlock, schedule, re-lock └─ signal → -ERESTARTSYS goto out_inode_unlock # <- lock leaked Fix this by moving filemap_invalidate_unlock() below the label so that all error paths release the lock, and rename the label to out_unlock as it now covers more than just the inode lock.
Title fuse: fix invalidate lock leak on open O_TRUNC DAX failure
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-09-04T15:55:07.864Z

Reserved: 2026-08-26T14:34:25.797Z

Link: CVE-2026-80855

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-04T16:18:14.507

Modified: 2026-09-04T16:18:14.507

Link: CVE-2026-80855

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-05T02:45:16Z

Weaknesses
  • CWE-668

    Exposure of Resource to Wrong Sphere