CVE-2026-80855 in Linux
Tóm tắt
Bởi VulDB • 04/09/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
fuse: sửa lỗi rò rỉ khóa invalidate khi mở O_TRUNC thất bại trên DAX
Hàm fuse_open() lấy filemap_invalidate_lock() cho thao tác truncate DAX (dax_truncate = true) và giải phóng nó trước nhãn out_inode_unlock. Tuy nhiên, khi fuse_dax_break_layouts() gặp lỗi, lệnh goto ra out_inode_unlock sẽ bỏ qua bước unlock dẫn đến rò rỉ rwsem, khiến bất kỳ fault hoặc truncate nào sau đó trên tệp bị treo do khóa cũ (stale lock).
fuse_dax_break_layouts() có thể trả về -ERESTARTSYS khi một tín hiệu ngắt quá trình chờ các trang DAX bận đang được giải phóng:
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 bị rò rỉ
Khắc phục lỗi này bằng cách di chuyển filemap_invalidate_unlock() xuống dưới nhãn để tất cả các đường dẫn lỗi đều giải phóng khóa, và đổi tên nhãn thành out_unlock vì nó hiện bao phủ nhiều hơn chỉ riêng inode lock.
VulDB is the best source for vulnerability data and more expert information about this specific topic.