Odebrany

CVE-2026-99039

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

memstick: core: poczekaj na zakończenie żądania przed zwolnieniem karty

W memstick_alloc_card() i memstick_set_rw_addr(),
Wait_for_completion_timeout() służy do oczekiwania na identyfikację urządzenia
i zaadresuj żądania konfiguracji, które należy ukończyć.

Podsystem memstick nie zapewnia przerwania ani anulowania
wywołanie zwrotne w strukturze memstick_host dla żądań w locie. Jeśli
Wait_for_completion_timeout() wygasa (na przykład, gdy transfer USB
lub ponowna próba polecenia jest opóźniona), memstick_alloc_card() zwraca błąd i
zwalnia strukturę memstick_dev poprzez kfree(card).

Jednak sterownik kontrolera hosta (taki jak rtsx_usb_ms) nadal nie działa
uruchamianie żądania asynchronicznie w kontekście roboczym. Kiedy transfer
ostatecznie się zakończy, sterownik zapisuje do host->req->data, który
wskazuje na pamięć wewnątrz już uwolnionej struktury karty. Prowadzi to do
a płyta KASAN-użytkowanie-po-darmowym napisz:

BŁĄD: KASAN: użycie płyty po zwolnieniu w ms_read_bytes+0x8fe/0x990
Zapisz rozmiar 1 pod adresem ffff88813c188079 za pomocą zadania kworker/1:5/5239
Kolejka robocza: zdarzenia rtsx_usb_ms_handle_req
Zadzwoń do śledzenia:
ms_read_bytes+0x8fe/0x990 sterowniki/memstick/host/rtsx_usb_ms.c:450
rtsx_usb_ms_issue_cmd sterowniki/memstick/host/rtsx_usb_ms.c:477 [wbudowane]
rtsx_usb_ms_handle_req+0x557/0x1a00 sterowniki/memstick/host/rtsx_usb_ms.c:531
proces_one_work+0xac7/0x1b10 jądro/workqueue.c:3396
wątek_pracownika+0x5ef/0xe50 jądro/workqueue.c:3560
kthread+0x373/0x450 jądro/kthread.c:436

Przydzielone przez zadanie 1662:
sterowniki memstick_alloc_card/memstick/core/memstick.c:383 [wbudowane]
memstick_check+0x2c1/0x10d0 sterowniki/memstick/core/memstick.c:452
proces_one_work+0xac7/0x1b10 jądro/workqueue.c:3396

Uwolniony przez zadanie 1662:
kfree+0x20c/0x650 mm/slub.c:6792
sterowniki memstick_alloc_card/memstick/core/memstick.c:420 [wbudowane]
memstick_check+0x72b/0x10d0 sterowniki/memstick/core/memstick.c:452
proces_one_work+0xac7/0x1b10 jądro/workqueue.c:3396

Sterowniki kontrolera hosta (rtsx_usb_ms, jmb38x_ms, tifm_ms, r592) już
wdrożyć własne limity czasu sprzętu i magistrali oraz włączyć osoby dzwoniące
mspro_block i ms_block już korzystają z funkcji Wait_for_completion()
bezwarunkowo.

Zamień wait_for_completion_timeout() na wait_for_completion() w
memstick_set_rw_addr() i memstick_alloc_card() tak, aby karta
struktura nigdy nie jest zwalniana podczas wykonywania żądania asynchronicznego.

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