CVE-2026-89646
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
ceph: napraw wyciekające odwołanie do i-węzła przy przerwaniu zapisu zwrotnego przy umount
ceph_dirty_folio() pobiera żądanie wrbuffera do każdego nowo zabrudzonego folio: to
podbija i_wrbuffer_ref (biorąc pod uwagę ihold() przy przejściu 0->1) i
dołącza kontekst snap_context do folio->private. Roszczenie to zostaje jedynie wycofane
przez ceph_put_wrbuffer_cap_refs(), z której uruchamiany jest przesłany zapis
writepages_finish().
W ceph_submit_write(), jeśli ceph_inc_osd_stopping_blocker() nie powiedzie się - co
dzieje się podczas umount — żądanie zostaje przerwane przed przesłaniem: the
już zebrane folio są jedynie ponownie zabrudzone i odblokowane, tzw
writepages_finish() nigdy nie działa i roszczenie wyciekło.
redirty_page_for_writepage() -> folio_redirty_for_writepage() ->
filemap_dirty_folio() ustawia PG_dirty bezpośrednio i nie przechodzi
->dirty_folio, więc funkcja ceph_dirty_folio() nie jest wprowadzana ponownie w celu przywrócenia równowagi.
Ponieważ każdy kolejny zapis zwrotny również kończy się niepowodzeniem dla osd_stopping_blocker,
i_wrbuffer_ref nigdy nie zwraca wartości 0, funkcja ihold() nigdy nie jest usuwana, a funkcja
i-węzeł nie może zostać eksmitowany:
VFS: Zajęte i-węzły po odmontowaniu ceph
BŁĄD jądra w fs/super.c:650!
Zwolnij osierocone roszczenie na ścieżce przerwania przed ponownym zabrudzeniem, via
ceph_undo_wrbuffer_claim(): odłącz snap_context, usuń wrbuffer
reference (pozwala i_wrbuffer_ref osiągnąć 0 i iput() i-węzłowi) i upuścić
odwołanie do snap_context - tj. wykonaj to, co zrobiłaby funkcja writepages_finish().
zrobione dla tych nigdy nie przesłanych folio.
Cofane są tylko wpisy zablokowanych stron; folio nadal znajdowały się w fbatch
nigdy nie jest usuwany przez to wywołanie (folio_clear_dirty_for_io() to
punkt przeniesienia własności, a udany ruch powoduje NULL w slocie fbatch), więc
nie mają żadnych roszczeń, jakie posiada to połączenie.
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org