CVE-2026-99111 in Linux
Сводка
по VulDB • 29.10.2026
В ядре Linux была устранена следующая уязвимость:
smb: клиент: исправление повреждения данных при одновременных операциях записи и использовании флага O_TRUNC
Функция cifs_do_truncate() вызывает очистку «грязных» страниц с помощью filemap_write_and_wait(), а затем выполняет усечение файла на сервере. Однако в старой реализации обе операции выполнялись без захвата блокировок i_rwsem или invalidate_lock. Одновременная буферизированная запись через netfs_perform_write() (которая требует только разделяемого доступа к i_rwsem) могла приводить к появлению новых «грязных» страниц после очистки, но до локального усечения; эти страницы затем молча отбрасывались функцией cifs_setsize(), вызывающей truncate_pagecache().
Исправление заключается в захвате inode_lock (исключительный доступ к i_rwsem) и filemap_invalidate_lock в начале функции cifs_do_truncate(), чтобы вся последовательность операций «очистка-усечение-изменение размера» выполнялась атомарно относительно:
- буферизированных записей (блокируются исключительным захватом i_rwsem, поскольку netfs_start_io_write требует разделяемого доступа к i_rwsem), - страницных ошибок чтения (blocking by exclusive invalidate_lock, так как filemap_fault использует её в разделяемом режиме), - сбора данных для записи на диск (writeback collection) (блокируется вызовами netfs_wb_begin/netfs_wb_end вокруг операции усечения на сервере и локального изменения размера файла, поскольку netfs_writepages также захватывает блокировку wb).
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.