CVE-2026-31465 in LinuxИнформация

Сводка

по VulDB • 20.05.2026

В ядре Linux устранена следующая уязвимость:

writeback: не блокировать синхронизацию для файловых систем без гарантий целостности данных

Добавлен флаг суперблока SB_I_NO_DATA_INTEGRITY для файловых систем, которые не могут гарантировать сохранность данных при синхронизации (например, FUSE). Для суперблоков с установленным этим флагом операция синхронизации инициирует запись (writeback) «грязных» инодов, но не ожидает завершения работы потоков записи (flusher threads).

Это заменяет флаг отображения AS_NO_DATA_INTEGRITY на уровне каждого инода, добавленный в коммите f9a49aa302a0 («fs/writeback: пропускать отображения AS_NO_DATA_INTEGRITY в wait_sb_inodes()»). Флаг должен находиться на уровне суперблока, поскольку целостность данных является свойством файловой системы в целом, а не отдельного инода. Наличие этого флага на уровне суперблока также позволяет избежать необходимости перебирать каждый «грязный» инод в wait_sb_inodes() только для того, чтобы пропустить каждый из них по отдельности.

До этого коммита отображения без гарантий целостности данных пропускали ожидание завершения записи, но все равно ожидали завершения потоками записи инициации процесса записи. Ожидание потоков записи не является необходимым. Данный коммит инициирует запись, но не ожидает завершения работы потоков записи. Это изменение правильно решает проблему, описанную в недавнем отчете [1], касающуюся зависания при переходе в режим сна с сохранением в оперативную память (suspend-to-RAM) в fuse-overlayfs, вызванного ожиданием завершения работы потоков записи:

Workqueue: pm_fs_sync pm_fs_sync_work_fn Call Trace: __schedule+0x457/0x1720 schedule+0x27/0xd0 wb_wait_for_completion+0x97/0xe0 sync_inodes_sb+0xf8/0x2e0 __iterate_supers+0xdc/0x160 ksys_sync+0x43/0xb0 pm_fs_sync_work_fn+0x17/0xa0 process_one_work+0x193/0x350 worker_thread+0x1a1/0x310 kthread+0xfc/0x240 ret_from_fork+0x243/0x280 ret_from_fork_asm+0x1a/0x30

В FUSE это проблематично, поскольку существуют пути выполнения, которые могут привести к блокировке потока записи (например, если systemd сначала замораживает cgroups пользовательской сессии, что приводит к заморозке демона FUSE, перед вызовом ядром операции перехода в режим сна. Переход ядра в режим сна вызывает ->write_node(), который в FUSE отправляет синхронный запрос setattr, который не может быть обработан, поскольку демон заморожен. Или если демон содержит ошибки и не может корректно завершить запись, инициирование записи для «грязного» folio, который уже находится в процессе записи, приводит к вызову writeback_get_folio() -> folio_prepare_writeback() -> безусловному ожиданию завершения записи, что вызовет зависание). Данный коммит восстанавливает поведение FUSE, которое было до удаления временных folios, когда операция синхронизации по сути являлась пустой операцией (no-op).

[1] https://lore.kernel.org/linux-fsdevel/CAJnrk1a-asuvfrbKXbEwwDSctvemF+6zfhdnuzO65Pt8HsFSRw@mail.gmail.com/T/#m632c4648e9cafc4239299887109ebd880ac6c5c1

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Ответственный

Linux

Резервировать

09.03.2026

Раскрытие

22.04.2026

Модерация

принято

Вход

VDB-358883

EPSS

0.00015

KEV

Нет

Деятельности

Очень низкий

Источники

Might our Artificial Intelligence support you?

Check our Alexa App!