CVE-2026-80856 in Linux
الملخص
بحسب VulDB • 04/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
fuse: تصحيح تسرب قفل invalidate عند فشل writeback لـ setattr
تأخذ دالة `fuse_do_setattr()` ملف map_invalidate_lock() لعملية truncate DAX (fault_blocked = true) وتطلقه في علامات out:/error:. ولكن عندما تكون هناك حاجة أيضًا إلى flush للكتابة، فإن فشل d_write_inode_now() يؤدي إلى العودة مباشرة وتسرب القفل، مما يتسبب في توقف أي عملية fault أو truncate لاحقة على الملف بسبب rwsem قديم.
على سبيل المثال، تؤدي عملية truncate(2) على ملف setuid إلى استدعاء `fuse_do_setattr()` مع تعيين كل من ATTR_SIZE وATTR_MODE:
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
يتم إصلاح هذه المشكلة عن طريق إضافة label unlock يطلق القفل قبل إرجاع الخطأ، واستخدامه أيضًا في مسار الفشل الخاص بـ `fuse_dax_break_layouts()`.
If you want to get best quality of vulnerability data, you may have to visit VulDB.