CVE-2026-99038
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
memstick: rtsx_usb_ms: kończ żądania po wyrzuceniu, zamiast je upuszczać
memstick_check() może przekazać kontrolę usuwania hosta tuż przed
rtsx_usb_ms_drv_remove() ustawia wysuwanie/usuwanie. Następnie ma następną prośbę
po cichu upuszczono: rtsx_usb_ms_request() pomija harmonogram_work() po wysunięciu
jest ustawiona, a funkcja cancel_work_sync() drv_remove może również anulować kolejkę
handle_req zanim odbierze żądanie. Nikt nie kończy
karta->mrq_complete.
Gdy rdzeń memsticka czeka na żądania bez limitu czasu („memstick: core:
poczekaj na zakończenie żądania przed zwolnieniem karty”), powoduje to zawieszenie usuwania:
memstick_check() nigdy nie powraca, a memstick_remove_host() blokuje się
kolejka_robocza():
INFO: zadanie kworker/u10:3:65 zablokowane na dłużej niż 20 sekund.
Kolejka robocza: kmemstick memstick_check
__poczekaj_na_wspólne
memstick_check
INFO: zadanie kworker/1:1:33 zablokowane na dłużej niż 20 sekund.
Kolejka robocza: usb_hub_wq hub_event
__flush_workqueue
memstick_remove_host
rtsx_usb_ms_drv_remove
Nigdy nie rezygnuj z prośby. rtsx_usb_ms_request() zawsze planuje handle_req,
i handle_req kończy się niepowodzeniem żądań za pomocą -ENOMEDIUM po ustawieniu wysuwania, bez
dotknięcie urządzenia. drv_remove opróżnia handle_req zamiast anulować
go i anuluje dopiero po memstick_remove_host(), gdy nie ma nowego
żądanie może nadejść, więc nie może zostać uruchomione na zwolnionym hoście.
Odpływ host_mutex w drv_remove został usunięty: handle_req zawsze opuszcza
host->req NULL po zakończeniu, więc drenaż nigdy nie miał nic do zrobienia,
i teraz będzie ścigał się z handle_req.
>_ Referencje
- https://git.kernel.org/stable/c/5616da0f92339328fa1472876df51555e15ad340
- https://git.kernel.org/stable/c/5b599e28aeb3684772aef64f46cc6f25f4c67128
- https://git.kernel.org/stable/c/c96ca94425b076dc398d929366e378d1e22ec794
- https://git.kernel.org/stable/c/d7e811c3a49cd5cff529c157df886719e09370ec
- https://git.kernel.org/stable/c/f2c181e1d58e911804e14543b2f1cc6b23a0d4d6
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