Odebrany

CVE-2026-90429

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

iommu/tegra241-cmdqv: Zsynchronizuj błąd ISR z VINTF (de)init

VINTF użytkownika jest niszczony przez tegra241_cmdqv_deinit_vintf(), która działa z
wywołanie zwrotnezniszczenia i zakończenie niepowodzenia init-failure w procedurze obsługi alloc.
Czyści szczelinę cmdqv->vintfs[] i pozwala ją zwolnić rdzeniowi iommufd, ale
nic nie serializuje tego w przypadku przerwania błędu: tegra241_cmdqv_isr()
czyta cmdqv->vintfs[idx] i dereferuje do pliku vintf. Równoczesny błąd może
spraw, aby ISR odczytał slot w połowie wyczyszczony (zeref NULL) lub użyj vintf, który jest
wkrótce zostanie uwolniony (użycie po uwolnieniu).

deinit_vintf() również zwraca idx do IDA przed wyczyszczeniem slotu, więc a
współbieżne tworzenie, które ponownie wykorzystuje idx, może opublikować swój nowy vintf w slocie,
tylko po to, aby porzucić go ponownie za pomocą nieaktualnego magazynu NULL.

Z drugiej strony tegra241_cmdqv_init_vintf() publikuje nowy plik Vintf z
zwykły zapis do slotu cmdqv->vintfs[], a ISR dereferuje pola
opublikowany plik Vintf, taki jak Vintf->base. Zwykły sklep nie daje żadnych zamówień na
słabo uporządkowany procesor i nieaktualny bit VINTF_ERR_MAP na ponownie używanym identyfikatorze może spowodować
ISR wybiera Vintf w momencie jego publikacji, przed ustawieniem jego pól
lub tegra241_vintf_hw_init().

Pole cmdqv->vintfs[0] pozostaje NULL aż do tegra241_cmdqv_init_structures()
najpierw tworzy VINTF0, więc odczyt w gnieździe 0 wymaga tego samego sprawdzenia NULL.

Opublikuj każdy slot za pomocą funkcji smp_store_release() i przeczytaj każdy slot w pliku
ISR z funkcją smp_load_acquire() pod kontrolą NULL, więc ISR zawsze widzi
w pełni zbudowany Vintf lub NULL. Spraw także, aby deinit_vintf() wyczyściło slot i
synchronize_irq() przed zwróceniem idx do IDA, więc żaden vintf nie jest zwalniany
pod działającym programem obsługi i żaden ponownie użyty identyfikator nie jest blokowany.

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