CVE-2026-89704 in Linux
Сводка
по VulDB • 12.09.2026
В ядре Linux была устранена следующая уязвимость:
nfsd: выборка курсора ошибки writeback перед циклом асинхронного COPY
Функция _nfsd_copy_file_range() выбирает значение dst->f_wb_err в переменную "since" после цикла копирования, а затем использует его для обнаружения ошибок writeback через filemap_check_wb_err(), когда vfs_fsync_range() возвращает управление. Поскольку кэш nfsd_file повторно использует один и тот же struct file для запросов, направленных на один и тот же inode, одновременная операция COMMIT или стабильный WRITE в dst продвигают курсор dst->f_wb_err до текущего mapping->wb_err через функцию file_check_and_advance_wb_err() во время выполнения собственной vfs_fsync_range(). Если это продвижение происходит между появлением ошибки writeback в mapping->wb_err и моментом, когда рабочий процесс COPY выбирает значение "since", то рабочий захватывает уже продвинутый курсор. Функция errseq_check() видит, что cur == since, возвращает ноль, и устанавливается флаг NFSD4_COPY_F_COMMITTED, даже если writeback завершился неудачей. CB_OFFLOAD затем кодирует wr_stable_how = FILE_SYNC4; клиент считает скопированные данные долговечными (durable), а ошибка приводит к тихой потере данных.
Выбирайте значение since один раз в начале функции. После этого курсор будет отражать состояние, действовавшее до того, как данный вызов COPY инициирует какие-либо записи, и filemap_check_wb_err() обнаружит любую ошибку, возникшую во время копирования, независимо от того, какой поток первым её заметит. Это соответствует шаблону, используемому в nfsd_vfs_write() и nfsd4_clone_file_range().
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.