Odebrany

CVE-2026-98924

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

fs: unikaj powtarzających się skanowań w evict_inodes()

Zaobserwowaliśmy zawieszone zadania, gdy użytkownicy próbowali odmontować system plików
po wyjęciu dysku w trakcie jego używania. Podczas urządzenia
usunięcia, fs_bdev_mark_dead() wywołuje funkcję evict_inodes() przytrzymując s_umount.

Za każdym razem, gdy funkcja evict_inodes() upuszcza funkcję s_inode_list_lock w celu zmiany harmonogramu, powoduje to
ponownie rozpoczyna spacer od głowy s_inodes. Z wieloma i-węzłami, do których istnieją odniesienia
na początku listy te ponowne uruchomienia wielokrotnie skanują te same i-węzły
bez ich odzyskiwania. Może to utrzymać s_umount przez długi czas,
blokowanie jednoczesnych prób gromadzenia danych i wyzwalanie raportów o zawieszonych zadaniach.

Zachowaj bieżący i-węzeł, już oznaczony jako I_FREEING, poza zasięgiem
wsadowo do momentu ponownego uzyskania s_inode_list_lock. Wznów spacer od tego miejsca
i-węzeł i usuń go w późniejszej partii lub na końcu spaceru.

Umożliwiają to walkerowi zero-refcount i kontrola stanu w ramach i_lock
zajmij i-węzeł, ustawiając I_FREEING i usuwając go z LRU.
Inne programy odzyskujące pomijają i-węzeł, pozostawiając odpowiedzialny za to walker
eksmisja. Tylko evict() usuwa go z s_inodes, więc trzymaj go z dala od
partia utylizacyjna gwarantuje, że pozostanie ona na liście podczas zamykania
zostaje upuszczony. Po ponownym przejęciu blokady odczytanie jej bieżącego następnego wskaźnika
uwzględnia jednoczesne usuwanie kolejnych i-węzłów.

Istniejące reguły czasu życia i-węzła zabraniają uzyskiwania referencji do
i-węzeł oznaczony I_FREEING lub I_WILL_FREE. __iget() wymaga od swojego obiektu wywołującego
przytrzymaj i_lock i ustal, że przyjęcie referencji jest ważne. Wyszukiwanie i-węzła
i igrab() sprawdzają te flagi w i_lock podczas uzyskiwania odniesienia
od zera. ihold() wymaga istniejącego odniesienia, które zachowałoby
i_count nonzero i uniemożliwienie temu walkerowi przejęcia i-węzła. Te
reguły pozwalają już na zwolnienie funkcji iput_final() i modułu zmniejszania i-węzłów
i_lock po ustawieniu I_FREEING i przed zakończeniem eksmisji.

Tymczasowe odwołanie do __iget() również utrzyma i-węzeł na liście,
ale jego wydanie musi zachować obsługę ostatniego odniesienia. Inny użytkownik może
zdobądź odniesienie, zaktualizuj leniwe znaczniki czasu i usuń jego odniesienie podczas
szpilka jest trzymana. Jeśli pin stanie się ostatnim odniesieniem, upuść go za pomocą
atomic_dec_and_test() i eksmitowanie bezpośrednio omija lazytime iput()
obsługi i może utracić aktualizacje sygnatur czasowych.

Zwolnienie pinu za pomocą iput() zachowuje tę obsługę, ale tak nie jest
zagwarantować eksmisję. fs_bdev_mark_dead() działa z ustawioną wartością SB_ACTIVE, więc iput()
może zachować i-węzeł w pamięci podręcznej, podczas gdy evict_inodes() musi eksmitować kwalifikujące się
i-węzły o zerowym odwołaniu. I-węzeł mógł również zostać zwolniony, gdy iput()
wraca, więc piechur nie może go użyć do wymuszenia eksmisji. Używanie
I_FREEING zachowuje istniejące zachowanie eksmisji bez wprowadzania
dodatkowe przejście ostatniego odniesienia.

Grupa auto xfstests przekazała ext4 i XFS ze znanymi niepowiązaniami
awarie wykluczone. Nie zaobserwowano żadnych nowych problemów, a także poprzednich
powtarzalne zawieszone zadanie nie występuje już w tej łatce.

>_ 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