CVE-2026-98068
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
net/rds: nie pozwól, aby funkcja rds_conn_shutdown() zużywała równoczesny spadek
rds_conn_shutdown() kończy się przeniesieniem ścieżki z
RDS_CONN_DISCONNECTING do RDS_CONN_DOWN i również akceptuje
RDS_CONN_ERROR jako stan początkowy tego końcowego przejścia, tak że
FIN przetwarzany w kontekście Softirq podczas porzucania nie ulega wykolejeniu
zamknięcie na zaszumioną ścieżkę błędów.
Ale zużycie tego RDS_CONN_ERROR zużywa również przepustkę zamykającą
przyszedł z tym: rds_conn_path_drop() ustawia RDS_CONN_ERROR, a następnie ustawia się w kolejce
cp_down_w i przepustka rozpoczynająca się na ścieżce już w RDS_CONN_DOWN
jest niewykonalne. W przypadku obudowy FIN, która jest nieszkodliwa - gniazdo FIN
przybyło to samo gniazdo, które właśnie zwolniło. Tak nie jest
nieszkodliwe dla droppera, który najpierw przyczepił coś do ścieżki.
rds_tcp_accept_one() jest takim dropperem. Jego ścieżka żąda w
rds_tcp_accept_one_path() przejścia RDS_CONN_DOWN ->
RDS_CONN_CONNECTING i jednoczesny spadek - FIN na poprzednim
gniazdo w kontekście softirq, reset administracyjny - może umieścić ścieżkę
do RDS_CONN_ERROR pomiędzy tym roszczeniem a sprawdzeniem stanu
następuje, co akceptuje RDS_CONN_ERROR. Akceptacja następnie instaluje
świeżo zaakceptowane gniazdo z funkcją rds_tcp_set_callbacks() w kolejce
Teredown - który samplował tc->t_sock zanim istniało to gniazdo - jest
nadal działa. rds_connect_path_complete() nie może przejść do
RDS_CONN_UP i ponownie upuszcza ścieżkę, ustawiając w kolejce przepustkę, która powinna
zbierz gniazdo, które właśnie zainstalowało. Jeśli przerwa w locie będzie ostateczna
przejście zużywa RDS_CONN_ERROR tej kropli, znaleziony w kolejce przebieg
ścieżkę w RDS_CONN_DOWN i nic nie robi. Zainstalowane gniazdo jest
nigdy nie zburzony: stoi na stałym miejscu, z uzbrojonymi wywołaniami zwrotnymi i jego
rds_tcp_connection na rds_tcp_tc_list, peer widzi połączenie, które
nic nigdy nie jest czytane, a ścieżka jest zaklinowana w RDS_CONN_DOWN, aż do pewnego momentu
późniejsze wydarzenie ponownie go upuści. Reprodukowane z poszerzonymi oknami wyścigowymi jako
stale rosnąca kolejka odbiorcza na gnieździe należącym do utkniętej ścieżki
RDS_CONN_DOWN, ze ścieżką nadawczą partnera zaklinowaną za nią.
Wykonaj tylko ostatnie przejście ROZŁĄCZENIE -> W DÓŁ. Jeśli się nie powiedzie
ponieważ ścieżka znajduje się w RDS_CONN_ERROR, kropla przyspieszyła porzucenie:
anuluj licznik ponownego połączenia i wyczyść RDS_RECONNECT_PENDING - ten
kawałek pominiętego ogona, którego nie wolno zostawiać – i wrócić,
pozwolić przejść kolejce zrzutów, zakończyć zadanie: niszczy
wszystko, co w międzyczasie zostało dołączone do ścieżki, kończy
przejście do RDS_CONN_DOWN i ponowne uzbrojenie ponownego połączenia z własnego
ogon.
Wyciszenie timera w tej gałęzi ma znaczenie, ponieważ ma to znaczenie spadek wyścigowy
nie zawsze kolejka przechodzi: rds_conn_path_drop() zwraca bez
czekanie w kolejce, gdy oczekuje się zniszczenia - dokładnie taka sytuacja podczas a
porzucenie netns lub rozładowanie modułu, gdy FIN na umierającym gnieździe jest
przetwarzane, podczas gdy rds_conn_path_destroy() opróżnia cp_down_w. Jeśli
przepustka spłukiwana to ta, która przyjmuje ten powrót, nie istnieje żadna późniejsza przepustka,
i rds_conn_path_destroy() stwierdzi, że cp_conn_w jest nadal uzbrojony
(WARN_ON), a następnie zwolnij ścieżkę, której licznik czasu ponownego połączenia może nadal działać.
Po anulowaniu w oddziale każde wyjście z przepustki zamykającej opuszcza
licznik czasu wyciszył się, niezależnie od tego, które przejście zakończy przejście.
Sprawa FIN poczyniła postępy, jedno przejście później i wciąż bez rezultatu
hałaśliwe rejestrowanie. Każdy inny stan zachowuje dzisiejszą funkcję rds_conn_path_error()
obsługa; żaden bieżący zapis stanu cp nie może opuścić ścieżki ROZŁĄCZAJĄCEJ
w czymkolwiek innym niż RDS_CONN_ERROR (każdy inny pisarz jest cmpxchg z
stan nierozłączający), więc ta gałąź ma charakter obronny.
Na jądrach bez poprzednich poprawek występuje to samo zagrożenie
spokój oparty na próbkach; poprawka obowiązuje tam jednakowo.
>_ 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