CVE-2026-43227
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: clocksource/drivers/sh_tmu: Probe prosesindən sonra cihazın həmişə işlək qalmasını təmin etmək TMU cihazı həm clocksource, həm də clockevent provayderi kimi istifadə edilə bilər. Drayver enerji səmərəliyini artırmaq üçün özünü avtomatik qoşub söndürməyə, həmçinin əməliyyatda olmadığı zaman saatını aktivləşdirməyə və ya deaktiv etməyə çalışır. Əgər TMU erkən platforma cihazı (early platform device) kimi istifadə olunursa, bu davranış bir qədər dəyişir; belə halda cihaz probe prosesindən sonra enerjili qalır, lakin saat runtime zamanı hələ də aktivləşdirilir və deaktiv edilir. Bu mexanizm uzun müddət problemsiz işləyib, lakin PREEMPT_RT və PROVE_LOCKING sahələrindəki son təkmilləşdirmələr bir problemi üzə çıxarıb. TMU özünü clockevent provayderi kimi qeydiyyatdan keçirdikdə (clockevents_register_device()), daxildə raw spinlock-lardan istifadə etməlidir, çünki clockevent freymvorku TMU drayveri ilə məhz bu kontekstdə qarşılıqlı əlaqə qurur. Lakin raw spinlock tutulduğu kontekstdə TMU drayveri pm_runtime_*() və clk_*() çağırışları ilə enerji vəziyyətini və ya saatını idarə edə bilmir, çünki bu çağırışlar enerji və saatları idarə etmək üçün adi spinlock-lardan istifadə edən digər platforma drayverlərinə yönəlir. Spinlock kontekstlərinin bu şəkildə qarışması lockdep xəbərdarlığına səbəb olur. ============================= [ BUG: Invalid wait context ] 6.18.0-arm64-renesas-09926-gee959e7c5e34 #1 Not tainted ----------------------------- swapper/0/0 is trying to lock: ffff000008c9e180 (&dev->power.lock){-...}-{3:3}, at: __pm_runtime_resume+0x38/0x88 other info that might help us debug this: context-{5:5} 1 lock held by swapper/0/0: ccree e6601000.crypto: ARM CryptoCell 630P Driver: HW version 0xAF400001/0xDCC63000, Driver version 5.0 #0: ffff8000817ec298 ccree e6601000.crypto: ARM ccree device initialized (tick_broadcast_lock){-...}-{2:2}, at: __tick_broadcast_oneshot_control+0xa4/0x3a8 stack backtrace: CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.18.0-arm64-renesas-09926-gee959e7c5e34 #1 PREEMPT Hardware name: Renesas Salvator-X 2nd version board based on r8a77965 (DT) Call trace: show_stack+0x14/0x1c (C) dump_stack_lvl+0x6c/0x90 dump_stack+0x14/0x1c __lock_acquire+0x904/0x1584 lock_acquire+0x220/0x34c _raw_spin_lock_irqsave+0x58/0x80 __pm_runtime_resume+0x38/0x88 sh_tmu_clock_event_set_oneshot+0x84/0xd4 clockevents_switch_state+0xfc/0x13c tick_broadcast_set_event+0x30/0xa4 __tick_broadcast_oneshot_control+0x1e0/0x3a8 tick_broadcast_oneshot_control+0x30/0x40 cpuidle_enter_state+0x40c/0x680 cpuidle_enter+0x30/0x40 do_idle+0x1f4/0x280 cpu_startup_entry+0x34/0x40 kernel_init+0x0/0x130 do_one_initcall+0x0/0x230 __primary_switched+0x88/0x90 Non-PREEMPT_RT versiyaları üçün bu ciddi problem deyil, lakin adi spinlock-ların yata biləcəyi (sleep) PREEMPT_RT versiyalarında bu problem yarada bilər. Ehtiyatlı olmaq məqsədilə, probe prosesindən sonra enerji və saat həmişə işlək saxlanılmalıdır.
Necə düzəltmək olar
- linux linux_kernel5.10.252, 5.15.202, 6.1.165, 6.6.128, 6.12.75, 6.18.16, 6.19.6 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 2.6.31 ≤ v < 5.10.252, 5.11 ≤ v < 5.15.202, 5.16 ≤ v < 6.1.165, 6.2 ≤ v < 6.6.128, 6.7 ≤ v < 6.12.75, 6.13 ≤ v < 6.18.16, 6.19 ≤ v < 6.19.6 | 5.10.252, 5.15.202, 6.1.165, 6.6.128, 6.12.75, 6.18.16, 6.19.6 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.