CVE-2026-98395
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
powerpc/entry: Naprawiono uszkodzenie irq_soft_mask przy wyjściu z powtarzanego przerwania
Kiedy __replay_soft_interrupts() odtwarza oczekujące przerwanie (np.
PACA_IRQ_DEC -> timer_interrupt), wywołuje bezpośrednio procedurę obsługi za pomocą a
syntetyczny pt_regs. Opakowanie DEFINE_INTERRUPT_HANDLER_ASYNC
każdy moduł obsługi wywołuje arch_interrupt_async_exit_prepare() przy wyjściu,
która wywołuje arch_interrupt_exit_prepare() -> local_irq_disable() ->
arch_local_irq_disable(), która:
irq_soft_mask_set(IRQS_DISABLED) /* 0x1 */
To bezwarunkowo zastępuje irq_soft_mask przez IRQS_DISABLED (0x1),
usuwanie bitu IRQS_PMI_DISABLED (0x2). Rezultatem jest to
irq_soft_mask ma wartość 0x1 zamiast IRQS_ALL_DISABLED (0x3), gdy
moduł obsługi powraca do __replay_soft_interrupts().
W przypadku normalnie wykonywanego przerwania jest to nieszkodliwe: następne przerwanie
zawsze wchodzi przez arch_interrupt_enter_prepare() który
bezwarunkowo ustawia irq_soft_mask na IRQS_ALL_DISABLED. Ale w trakcie
replay, next_interrupt() jest wywoływana bezpośrednio pomiędzy odtwarzanymi procedurami obsługi
bez cofania się przez arch_interrupt_enter_prepare(), więc
pozbawiony bitu nigdy nie jest przywracany. next_interrupt() następnie uruchamia OSTRZEŻENIE:
OSTRZEŻENIE: arch/powerpc/kernel/irq_64.c:75
WARN_ON(irq_soft_mask_return() != IRQS_ALL_DISABLED)
Ostrzeżenie zostało zaobserwowane na początku uruchamiania komputera gościa z serii POWER10
podczas kmem_cache_init_late(), gdzie wyzwalane jest zwolnienie spinlocka
przerwanie odtwarzania, które przetwarza oczekujące przerwanie czasowe.
Stan debugera potwierdzający błąd:
Przed timer_interrupt(®s):
irq_soft_mask = 0x3 (IRQS_ALL_DISABLED) poprawne
irq_happened = 0x41 (HARD_DIS|POWTARZANIE) poprawne
Po zwróceniu timer_interrupt(®s):
irq_soft_mask = 0x1 (IRQS_DISABLED) ŹLE - usunięto bit PMI
irq_happened = 0x41 bez zmian
Rozwiązanie polega na zastąpieniu funkcji local_irq_disable() funkcją hard_irq_disable().
hard_irq_disable() jest tutaj właściwym prymitywem z dwóch powodów:
1. Na PPC64 (hw_irq.h:301) wywołuje irq_soft_mask_set_return(IRQS_ALL_DISABLED),
ustawienie maski miękkiej na 0x3 (zarówno IRQS_DISABLED, jak i IRQS_PMI_DISABLED),
który zachowuje bit PMI i naprawia OSTRZEŻENIE. Dodatkowe
praca, którą wykonuje (__hard_irq_disable(), PACA_IRQ_HARD_DIS |=) to
zbędne, ale bezpieczne, ponieważ oba są już ustawione w tym momencie w pliku
ścieżka wyjścia; wewnątrz funkcja trace_hardirqs_off() jest strzeżona przez
if (!arch_irqs_disabled_flags(flags)), aby nie doszło do podwójnego uruchomienia.
2. Na PPC32 (hw_irq.h:467) hard_irq_disable() mapuje do
arch_local_irq_disable() -> __hard_irq_disable(), która usuwa
MSR[EE] w sprzęcie. To prawda: PPC32 nie ma miękkiej maski
Mechanizm PACA, więc wyłączenie sprzętu jest właściwym sposobem na zaspokojenie potrzeb
wymaganie irqentry_exit(). Naprawia to również błąd kompilacji na PPC32
gdzie irq_soft_mask_set() jest zdefiniowana tylko w CONFIG_PPC64:
arch/powerpc/include/asm/entry-common.h:273: błąd: ukryty
deklaracja funkcji „irq_soft_mask_set”
Użycie hard_irq_disable() nie wymaga #ifdef i jest zgodne z
jak reszta kodu wejścia (np. wpis-common.h:463) obsługuje
ten sam podział PPC32/PPC64.
>_ 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