CVE-2026-93221
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
nfsd: konwertuj flagi logiczne nfsd_net na słowo długich flag bez znaku
nfsd_net zawiera kilka pól logicznych, z których można uzyskać dostęp
współbieżne konteksty bez serializacji. W szczególności
nfsd4_end_grace() chroni ścieżkę drenażu za pomocą zwykłego boola:
if (nn->grace_ended)
powrót;
nn->grace_ended = prawda;
Odczyt i zapis są niezależne i nie mają żadnej struktury
nfsd_net serializuje je. Można to osiągnąć co najmniej w dwóch kontekstach
kod bez trzymanej blokady:
ścieżka do pralni
pralnia_wq pracownik
nfs4_pralka()
nfsd4_end_grace()
Ścieżka RECLAIM_COMPLETE
Nfsd złożony wątek
nfsd4_reclaim_complete()
inc_reclaim_complete()
nfsd4_end_grace()
Obaj wywołujący mogą obserwować Grace_ended == false na różnych procesorach,
oba zapisują wartość true i oba przechodzą do funkcji nfsd4_record_grace_done(),
który wywołuje aktywne wywołanie zwrotne client_tracking_ops->grace_done.
W przypadku operacji śledzenia, które wyczerpują zasoby reclaim_str_hashtbl (legacy_tracking_ops
przez nfsd4_recdir_purge_old i cld v1+ ops przez
nfsd4_cld_grace_done), Grace_done wywołuje nfs4_release_reclaim(),
który przechodzi przez każde wiadro reclaim_str_hashtbl bez blokady i
wywołuje nfs4_remove_reclaim_record() (list_del + kfree) na każdym
wpis. Dwóch jednoczesnych spacerowiczów psuje listę i podwójnie zwalnia
każde nfs4_client_reclaim. Równoczesny nfsd4_find_reclaim_client()
iteracja tego samego segmentu odczytuje zwolnioną pamięć.
Trzecia strona wywołań istnieje w nfs4_state_start_net() w witrynie
ścieżka startowa skip_grace, ale działa ona wcześniej pod nfsd_mutex
klient się połączył i przed pierwszym opóźnieniem pralni
powoduje pożary, więc nie może ścigać się z dwoma rozmówcami powyżej.
Zastąp rozproszone pola logiczne w nfsd_net pojedynczym
słowo unsigned long flags i wyliczenie nfsd_net_flag dla tego bitu
pozycje. Wyścig Grace_ended jest naprawiany za pomocą
test_and_set_bit(), która jest atomowa we wszystkich architekturach. The
pozostałe flagi (grace_end_forced, in_grace, Someone_reclaimed,
track_reclaim_completes, nfsd_net_up, lockd_up) są konwertowane
użyj test_bit/set_bit/clear_bit dla spójności. To pozwala uniknąć
Podsłowo cmpxchg dotyczy tylko takich architektur jak Hexagon
obsługuje operacje atomowe wielkości słowa.
>_ 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