CVE-2026-80855

fuse: fix invalidate lock leak on open O_TRUNC DAX failure

State
Published
Severity
Not scored
Published
Sep 4, 2026
Updated
Oct 30, 2026
Reserved
Aug 26, 2026

Read the record on cve.org

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 81775ab858b4236c52c5da7e25cec6e49dd91b46 to before 69a294e561c10909688bcb25456535dcd1818e1aAffected
  • d58366aab86854217b81679d1a9dcd54a2edfc2a to before 1b04d80a27d317064cce2307472f5bef9975bc50Affected
  • 2fdbb8dd01556e1501132b5ad3826e8f71e24a8b to before a61524da59a2f5ac9c8de23ff98b30da769ab144Affected
  • 2fdbb8dd01556e1501132b5ad3826e8f71e24a8b to before dcf30a56624c2a0cfab1bada5b1ca8cc0c02f010Affected
  • 2fdbb8dd01556e1501132b5ad3826e8f71e24a8b to before 7288c279ddbd654a06c82118c1a3f5570c1807f0Affected
  • 2fdbb8dd01556e1501132b5ad3826e8f71e24a8b to before 776e85fda752f9a15e0f82dec42ecacd12a9bd94Affected
  • 2fdbb8dd01556e1501132b5ad3826e8f71e24a8b to before 1d3e701cda2f41d48aa721b3ebefbe0fbf8d74daAffected
  • 2fdbb8dd01556e1501132b5ad3826e8f71e24a8b to before e981474d7bf1457da12404e169ea147d2c8ecea7Affected
  • 2fdbb8dd01556e1501132b5ad3826e8f71e24a8b to before a927f1867e61b78f39f9da0bbba3c98c2ca151feAffected
  • b57e150ac2eac791d5d187923b73dc2dafaf67faAffected
  • 1fdbbe246daf348adaa0739463384b16ceba1fc0Affected
  • 5.10.179 to before 5.10.273Affected
  • 5.15.109 to before 5.15.220Affected
  • 5.18.18 to before 5.19Affected
  • 5.19.2 to before 5.20Affected
LinuxLinux
  • 6.0Affected
  • before 6.0Not affected
  • 5.10.273 through 5.10.*Not affected
  • 5.15.220 through 5.15.*Not affected
  • 6.1.187 through 6.1.*Not affected
  • 6.6.156 through 6.6.*Not affected
  • 6.12.108 through 6.12.*Not affected
  • 6.18.49 through 6.18.*Not affected
  • 7.1.13 through 7.1.*Not affected
  • 7.2.3 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.