Odebrany

CVE-2026-89589

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

acpi/apei/ghes: Użyj raw_spinlock_t dla blokad roboczych CXL CPER

Nabywają pomocników do rejestracji i wyrejestrowania pracy CXL CPER
cxl_cper_work_lock i cxl_cper_prot_err_work_lock z blokadą spinlock
Guard(), która pozostawia włączone przerwania lokalne. Odpowiedni post
ścieżki (cxl_cper_post_event(), cxl_cper_post_prot_err()) wykonaj mocno
kontekst IRQ (wywoływane ze ścieżki powiadamiania o błędach GHES) oraz
uzyskaj te same blokady za pomocą funkcji irqsaveguard().

Jeśli procesor utrzymuje jedną z tych blokad za pomocą funkcji spinlockguard(), gdy GHES
przerwanie dociera do tego samego procesora, procedura obsługi IRQ obraca się na wstrzymanej blokadzie
czeka na zwolnienie, podczas gdy posiadacz blokady jest zajęty przez przerwanie.
Rezultatem jest impas.

Konwertuj obie blokady ze spinlock_t na raw_spinlock_t i użyj funkcji Guard() at
wszystkie strony połączeń. Na jądrach PREEMPT_RT spinlock_t jest wspierany przez rt_mutex i
spanie z twardego kontekstu IRQ jest niedozwolone; raw_spinlock_t jest bezpieczny
oba konteksty.

Dodaj WARN_ONCE do obu funkcji rejestrów, aby ujawnić podwójną rejestrację
błędy w czasie wykonywania.

Zrestrukturyzuj obie funkcje wyrejestrowania, aby wyczyścić globalny wskaźnik pracy
pod blokadą przed wywołaniem cancel_work_sync(), zamykając okno
gdzie przerwanie CPER mogłoby zaplanować pracę nad wskaźnikiem, który wkrótce się pojawi
uwolniony. Dodaj kfifo_reset() po cancel_work_sync(), aby wpisy były nieaktualne
nie są odtwarzane przy następnym ładowaniu modułu.

Obydwa kfifo są przeznaczone dla jednego konsumenta: zarejestrowana jest tylko jedna struktura work_struct
czas, wymuszony przez strażnika WARN_ONCE w funkcjach rejestru.
kfifo_reset() jest bezpieczna poza zamkiem, ponieważ funkcja cancel_work_sync() tak ma
już uspokoił konsumenta i żaden nowy konsument nie może się zarejestrować do
bieżące wyjście modułu zostaje zakończone i uruchamiane jest nowe inicjowanie modułu.

Usuń zbędne wywołanie cancel_work_sync() z funkcji cxl_ras_exit() i
cxl_pci_driver_exit(). Funkcje wyrejestrowywania CPER są teraz wyłączone
pracę wewnętrznie.

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