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

Сводка

по VulDB • 11.09.2026

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

ceph: исправлена утечка ссылки на inode при прерывании writeback во время umount

Функция ceph_dirty_folio() получает захват wrbuffer для каждого вновь испачканного folio: она увеличивает i_wrbuffer_ref (вызывая ihold() при переходе от 0 к 1) и прикрепляет snap_context к полю folio->private. Этот захват освобождается только функцией ceph_put_wrbuffer_cap_refs(), которая в случае отправленной записи вызывается из writepages_finish().

В функции ceph_submit_write(), если сбой происходит при вызове ceph_inc_osd_stopping_blocker() (что случается во время umount), запрос прерывается до отправки: уже собранные folio только повторно помечаются как испачканные и разблокируются, поэтому writepages_finish() никогда не выполняется, а захват утекает.

Вызовы redirty_page_for_writepage() -> folio_redirty_for_writepage() -> filemap_dirty_folio() устанавливают флаг PG_dirty напрямую и не проходят через вызов ->dirty_folio, поэтому ceph_dirty_folio() повторно не вызывается для балансировки. Поскольку каждая последующая операция writeback также терпит неудачу из-за osd_stopping_blocker, значение i_wrbuffer_ref никогда не возвращается к 0, захват (ihold()) никогда не снимается, и inode не может быть вытеснен:

VFS: Busy inodes after unmount of ceph kernel BUG at fs/super.c:650!

Освободите брошенный захват в пути прерывания перед повторной пометкой как испачканного, используя функцию ceph_undo_wrbuffer_claim(): открепите snap_context, уменьшите ссылку wrbuffer (позволяя i_wrbuffer_ref достичь 0 и вызывая iput() для inode) и снимите ссылку на snap_context — то есть выполните действия, которые writepages_finish() выполнила бы для этих никогда не отправленных folio.

Отменяются только записи locked_pages; folio, все еще находящиеся в fbatch, не были очищены от флага dirty этим вызовом (folio_clear_dirty_for_io() является точкой передачи права собственности, и успешное перемещение устанавливает слот fbatch равным NULL), поэтому они не содержат захвата, которым владеет данный вызов.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

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

Linux

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

11.09.2026

Раскрытие

12.09.2026

Модерация

принято

Вход

VDB-402957

EPSS

0.00000

KEV

Нет

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

Очень низкий

Источники

Interested in the pricing of exploits?

See the underground prices here!