Odebrany

CVE-2026-90338

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

serial: amba-pl011: włącz zegar konsoli dla zapisów atomowych

pl011_console_write_atomic() działa z kontekstu atomowego nbcon, gdzie
spanie jest zabronione. Wywołuje funkcję clk_enable(), która pobiera funkcję common-clk
włącz_blokadę. W PREEMPT_RT jest to blokada uśpienia:
clk_enable_lock() najpierw próbuje spin_trylock_irqsave(), ale w ramach rywalizacji
powraca do spin_lock_irqsave(). Dlatego też drukuje się w kontekście atomowym
jądro RT z pl011 wspieranym przez clk może się wyłączyć:

BŁĄD: funkcja uśpienia wywołana z nieprawidłowego kontekstu w spinlock_rt.c:48
__might_resched z rt_spin_lock
rt_spin_lock z clk_enable_lock
clk_enable_lock z clk_enable
clk_enable z pl011_console_write_atomic
... z vprintk_emit

Zostało to znalezione i odtworzone na PREEMPT_RT. Są to układy SoC Arm32 i arm64 DT
dotknięty; arm64 SBSA/ACPI nie ma clk, więc clk_enable(NULL) powoduje zwarcie
przed zamkiem. Ponadto funkcję write_atomic() można wywołać z NMI
kontekście i jest udokumentowane, aby uniknąć zablokowania. Usuwanie clk_enable() z
wywołanie zwrotne pozwala również uniknąć potencjalnie niebezpiecznego przejęcia NMI
wspólny zegar Enable_lock.

Konsola nbcon obsługująca technologię atomową musi umożliwiać drukowanie z dowolnego kontekstu, więc
zegara nie można bramkować pomiędzy zapisami. Włącz zegar podczas
konsola jest dostępna do wyjścia: użyj clk_prepare_enable() w
pl011_console_setup(), zwolnij ją za pomocą clk_disable_unprepare() w
wywołanie zwrotne konsoli .exit() i upuść funkcję clk_enable()/clk_disable() przy zapisie
pary z write_atomic() i write_thread().

Gdy printk zawiesza konsole, porzuć odwołanie
uart_suspend_port() zatrzymuje dostęp do konsoli i przywraca ją wcześniej
uart_resume_port() - ale tylko wtedy, gdy zawieszenie faktycznie oznaczyło port
zawieszony (tty z możliwością wybudzenia pozostaje uruchomiony i musi utrzymywać swój zegar) oraz
zachowaj go, gdy console_suspend_enabled ma wartość false, więc no_console_suspend działa.

Koszt mocy czynnej utrzymywania włączonego zegara zależy od platformy:
brak, gdzie zegar UART jest stałym, zawsze włączonym oscylatorem, prawdziwy tam, gdzie jest
jest bramkowaną gałęzią zegara, która w takim przypadku nie może być bramkowana (ani prawdopodobnie nie może).
jego zegary nadrzędne), podczas gdy konsola jest dostępna do wyjścia. Kiedy serial
core faktycznie zawiesza port, odniesienie jest zwalniane, więc zegar
dostawca może bramkować drzewo zegara.

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