Odebrany

CVE-2026-92503

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ę:

ext4: napraw impas ABBA w ext4_xattr_inode_cache_find()

Syzbot/stres-ng zgłosił zakleszczenie ABBA w ext4 podczas ćwiczeń
równoczesne obciążenia xattr (przy użyciu opcji montowania/format ea_inode).

Zakleszczenie występuje pomiędzy uruchomioną transakcją a eksmisją
wątek:
- Zadanie 1 (stres-ng): Przechowuje odniesienie do współdzielonego wpisu mbcache_entry (ce)
i wywołuje ext4_xattr_inode_cache_find() -> ext4_iget() w celu pobrania
odpowiedni i-węzeł EA. Ponieważ i-węzeł EA jest obecnie w trakcie
eksmitowany, ext4_iget() blokuje w __wait_on_freeing_inode() czekając na
eksmisja do końca.
- Zadanie 2 (wątek eksmisji): Obecnie eksmituję ten sam i-węzeł EA w
ext4_evict_ea_inode(). Wywołuje funkcję mb_cache_entry_wait_unused(oe) która
bloki czekają, aż Zadanie 1 zwolni odwołanie do wpisu mbcache_entry.

Aby przełamać ten impas, zaimplementuj nową flagę konfiguracyjną ext4_iget().
o nazwie EXT4_IGET_NOWAIT. Po ustawieniu wykonaj nieblokujące wyszukiwanie pliku
i-węzeł poprzez funkcję API find_inode_nowait() VFS.

Jeśli i-węzeł jest obecnie eksmitowany (oznaczony jako I_FREEING lub
I_WILL_FREE) lub utworzony (I_CREATING), lub jeśli nie ma go w VFS
Pamięć podręczna i-węzła (brak pamięci podręcznej), po prostu pomiń ją (zwracając -ENOENT) zamiast
oczekiwanie na zakończenie eksmisji/tworzenia, przerywając cykl ABBA.

Ponieważ zwracamy -ENOENT natychmiast w przypadku braku pamięci podręcznej, nigdy nie próbujemy tego robić
przydziel nowy i-węzeł lub wywołaj iget_locked(), całkowicie eliminując każdy
Okno wyścigowe TOCTOU.

Jeśli zwrócony i-węzeł to I_NEW, poczekaj, aż jego inicjacja zostanie wyczyszczona
wait_on_new_inode(). Jeśli inicjalizacja nie powiedzie się i i-węzeł nie zostanie zaszyfrowany
podczas wybudzania funkcji wait_on_new_inode() (np. z powodu błędu odczytu we/wy w
inny wątek), bezpiecznie usuń odniesienie i zwróć -ENOENT. To
sprawdzanie bez mieszania jest wykonywane bezwarunkowo na wszystkich ścieżkach trafienia do pamięci podręcznej
właściwie obsługiwać współbieżne błędy inicjalizacji.

Wreszcie standardowe kontrole walidacyjne (w tym is_bad_inode,
Flagi EXT4_EA_INODE_FL, file_acl i xattr) są wewnątrz wykonywane normalnie
check_igot_inode(), aby w pełni zagwarantować bezpieczeństwo warstwy VFS.

W ext4_xattr_inode_cache_find() wywołaj ext4_iget() z nowym
Flaga EXT4_IGET_NOWAIT umożliwiająca wykonanie nieblokującego wyszukiwania w pamięci podręcznej.

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