CVE-2026-89589
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: acpi/apei/ghes: CXL CPER iş kilidləri üçün raw_spinlock_t istifadə edin CXL CPER işinin qeydiyyatı və qeydiyyatdan çıxarılması köməkçiləri cxl_cper_work_lock və cxl_cper_prot_err_work_lock kilidlərini spinlock guard() ilə əldə edir ki, bu da yerli interrupsiyaların aktiv qalmasına səbəb olur. Müvafiq sonrakı yollar (cxl_cper_post_event(), cxl_cper_post_prot_err()) hard IRQ kontekstində icra olunur (onlar GHES xəta bildirişi yolundan çağırılır) və eyni kilidləri irqsave guard() ilə əldə edirlər. Əgər bir CPU, eyni CPU-da GHES interrupsiyası baş verdikdə bu kilidlərdən birini spinlock guard() vasitəsilə saxlayırsa, IRQ idarəedicisi kilidin azad edilməsini gözləyərək onun üzərində fırlanır (spin), kilidi saxlayan tərəf isə IRQ tərəfindən preempt edilir. Nəticədə deadloq yaranır. Hər iki kilidi spinlock_t-dən raw_spinlock_t-yə çevirin və bütün çağırış nöqtələrində guard() istifadə edin. PREEMPT_RT nüvələrində spinlock_t rt_mutex tərəfindən dəstəklənir və hard IRQ kontekstindən yatmağa (sleep) icazə verilmir; raw_spinlock_t hər iki kontekstdə təhlükəsizdir. İcra zamanı ikiqat qeydiyyat xətalarını aşkar etmək üçün hər iki qeydiyyat funksiyasına WARN_ONCE əlavə edin. Hər iki qeydiyyatdan çıxarma funksiyasını yenidən quraraq, cancel_work_sync() çağırılmadan əvvəl qlobal iş göstəricisini (pointer) kilid altında təmizləyin; beləliklə, CPER interrupsiyasının azad edilmək üzrə olan göstərici üzərində iş planlaşdıra biləcəyi boşluq bağlanmış olur. cancel_work_sync()-dən sonra kfifo_reset() əlavə edin ki, köhnəlmiş girişlər növbəti modul yükləməsində təkrar oynadılmasın. Hər iki kfifo tək istehlakçılıdır: yalnız bir work_struct eyni anda qeydiyyata alınır və bu, qeydiyyat funksiyalarındakı WARN_ONCE mühafizəsi ilə təmin edilir. kfifo_reset() kiliddən kənarda təhlükəsizdir, çünki cancel_work_sync() artıq istehlakçını sakitləşdirmişdir və cari modulun çıxışı tamamlanana və yeni modul init işə düşənə qədər heç bir yeni istehlakçı qeydiyyatdan keçə bilməz. cxl_ras_exit() və cxl_pci_driver_exit() funksiyalarından artıq olan cancel_work_sync() çağırışlarını silin. CPER qeydiyyatdan çıxarma funksiyaları artıq daxili şəkildə işi sakitləşdirir.
Necə düzəltmək olar
- Linux Linuxcbc27a4302a1feb0ff77c1755021837a738b0ce9, c735dbce7ad03df708bf22ec964f67e43cbc823a, 0e25382b05de48d09b243d3d447d236a6d735bc2, 6625ca499c3131ef63be3215f8f942d7a097ea3a və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 5e4a264bf8b55d5a1b4c8cd96ac10b99f98d7487 ≤ v < cbc27a4302a1feb0ff77c1755021837a738b0ce9, 5e4a264bf8b55d5a1b4c8cd96ac10b99f98d7487 ≤ v < c735dbce7ad03df708bf22ec964f67e43cbc823a, 5e4a264bf8b55d5a1b4c8cd96ac10b99f98d7487 ≤ v < 0e25382b05de48d09b243d3d447d236a6d735bc2, 5e4a264bf8b55d5a1b4c8cd96ac10b99f98d7487 ≤ v < 6625ca499c3131ef63be3215f8f942d7a097ea3a, 6.10 | cbc27a4302a1feb0ff77c1755021837a738b0ce9, c735dbce7ad03df708bf22ec964f67e43cbc823a, 0e25382b05de48d09b243d3d447d236a6d735bc2, 6625ca499c3131ef63be3215f8f942d7a097ea3a |
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.