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

fuse: fix invalidate lock leak on setattr writeback failure

fuse_do_setattr() takes filemap_invalidate_lock() for a DAX truncate
(fault_blocked = true) and releases it at the out:/error: labels. But
when a writeback flush is also needed, a write_inode_now() failure
returns directly and leaks the lock, so any later fault or truncate on
the file stalls on the stale rwsem.

For example, truncate(2) on a setuid file reaches fuse_do_setattr()
with both ATTR_SIZE and ATTR_MODE set:

truncate(2)
└─ do_truncate()
├─ dentry_needs_remove_privs() # S_ISUID
└─ notify_change() # KILL_SUID -> ATTR_MODE
└─ fuse_setattr() # no killpriv:
│ # ia_valid |= ATTR_MODE
└─ fuse_do_setattr()
├─ filemap_invalidate_lock() # IS_DAX && is_truncate
└─ write_inode_now() # is_wb && ATTR_MODE
└─ if (err) # e.g. daemon -> -EIO
return err # <- lock leaked

Fix this by adding an unlock label that releases the lock before
returning the error, and use it for the fuse_dax_break_layouts()
failure path as well.
Published: 2026-09-04
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Immediate Patch
AI Analysis

Impact

The Linux kernel function fuse_do_setattr mistakenly retains a filemap_invalidate_lock when a writeback flush fails during a setuid file truncate. This leaked lock causes subsequent file operations to block on a stale read–write semaphore, making the filesystem unresponsive and leading to a denial of service. The flaw is a kernel resource synchronization bug that can be triggered when an administrator or compromised application performs truncate calls on DAX‑backed setuid files.

Affected Systems

All Linux kernel releases that incorporate the FUSE driver are affected, including both standard and enterprise distributions. The vulnerability exists in any kernel that has not yet applied the commit that adds an unlock label to release the lock on error paths. The kernel package is available for all mainstream Linux vendors.

Risk and Exploitability

The flaw is local and requires the ability to perform a truncate operation on a setuid file via FUSE. Because the kernel leaks a lock, an attacker with such access can cause a denial of service that impacts all operations on that file, potentially cascading to system‑wide stalls. The CVE does not have an EPSS score or KEV listing, but the severity of the impact and the patch nature suggest a high risk for affected systems. The attack vector is likely local, but in environments where elevated privileges are widely available (e.g., setuid binaries or services running as privileged users), the threat of a DoS expands considerably.

Generated by OpenCVE AI on September 4, 2026 at 20:55 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that includes the commit adding the unlock label in fuse_do_setattr.
  • Reboot the system after applying the kernel update to ensure the patched code is active.
  • If a kernel update cannot be applied immediately, restrict use of setuid files on FUSE‑mounted DAX files to trusted users, or remove setuid permissions from such files until the patch is applied.

Generated by OpenCVE AI on September 4, 2026 at 20:55 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 21:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-404
CWE-673

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 setattr writeback failure fuse_do_setattr() takes filemap_invalidate_lock() for a DAX truncate (fault_blocked = true) and releases it at the out:/error: labels. But when a writeback flush is also needed, a write_inode_now() failure returns directly and leaks the lock, so any later fault or truncate on the file stalls on the stale rwsem. For example, truncate(2) on a setuid file reaches fuse_do_setattr() with both ATTR_SIZE and ATTR_MODE set: truncate(2) └─ do_truncate() ├─ dentry_needs_remove_privs() # S_ISUID └─ notify_change() # KILL_SUID -> ATTR_MODE └─ fuse_setattr() # no killpriv: │ # ia_valid |= ATTR_MODE └─ fuse_do_setattr() ├─ filemap_invalidate_lock() # IS_DAX && is_truncate └─ write_inode_now() # is_wb && ATTR_MODE └─ if (err) # e.g. daemon -> -EIO return err # <- lock leaked Fix this by adding an unlock label that releases the lock before returning the error, and use it for the fuse_dax_break_layouts() failure path as well.
Title fuse: fix invalidate lock leak on setattr writeback 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:09.250Z

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

Link: CVE-2026-80856

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-80856

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-05T04:45:05Z

Weaknesses
  • CWE-404

    Improper Resource Shutdown or Release

  • CWE-673

    External Influence of Sphere Definition