CVE Catalog

CVE-2026-80855

Unknown
Published: Translated: NVD NIST

Summary

In the Linux kernel, the FUSE filesystem leaks a write lock (rwsem) during an open with O_TRUNC for DAX files when fuse_dax_break_layouts() fails (e.g., -ERESTARTSYS). This causes later operations on the file to stall due to the unreleased lock.

Risk Assessment

The organization may experience hangs or blocking of operations on FUSE files with DAX, potentially leading to unavailability of services depending on those files.

Recommendation

Apply a Linux kernel update containing the fix that moves filemap_invalidate_unlock() below the out_inode_unlock label so all error paths release the lock.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

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.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS