CVE-2026-46202
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: HID: appletb-kbd: hareketsizlik kaynaklı otomatik karartmayı (autodim) iş kuyruklarından (workqueues) çalıştırın hid-appletb-kbd içerisindeki otomatik karartma kodu, iki farklı atomik bağlam üzerinden backlight_device_set_brightness() -> mutex_lock() aracılığıyla backlight_device->ops_lock kilidini alır: * appletb_inactivity_timer() bir struct timer_list geri çağırmasıdır, bu nedenle softirq bağlamında çalışır. Her süre aşımı şunları tetikler: BUG: sleeping function called from invalid context at kernel/locking/mutex.c:591 Call Trace: <IRQ> __might_resched __mutex_lock backlight_device_set_brightness appletb_inactivity_timer call_timer_fn run_timer_softirq * reset_inactivity_timer(), appletb_kbd_hid_event() ve appletb_kbd_inp_event() tarafından çağrılır. Gerçek USB donanımlarında bunlar softirq/IRQ bağlamında (URB tamamlanması ve giriş olayı dağıtımı) çalışır. Touch Bar zaten karartıldığında veya kapatıldığında, sıfırlama yolu parlaklığı geri yüklemek için doğrudan backlight_device_set_brightness() fonksiyonunu çağırarak aynı uyarıyı üretir. Her iki çağrı noktası da aynı mutex_lock()-from-atomic hatasına yol açmaktadır. Engelleyici işlemi sistem iş kuyruğuna taşıyarak bunları birlikte düzeltin: * Hareketsizlik zamanlayıcısını struct timer_list yapısından struct delayed_work yapısına dönüştürün; geri çağırma (appletb_inactivity_work) artık mutex_lock() işleminin yasal olduğu işlem (process) bağlamında çalışır. * Özel bir struct work_struct restore_brightness_work ekleyin ve reset_inactivity_timer()'ın backlight_device_set_brightness() fonksiyonunu doğrudan çağırmak yerine bunu planlamasını sağlayın. Sürücü kaldırılırken her iki işlemi mevcut arka ışık referans düşürme işlemiyle birlikte senkron olarak iptal edin. Semantikler değişmemiştir (aynı gecikmeler, karartma, kapatma ve kullanıcı etkinliği durumunda aynı durum geçişleri); yalnızca uyku modundaki çağrının yürütme bağlamı değişmiştir. Zamanlayıcı alanı ve geri çağırma ismi yeni türlerine uygun şekilde yeniden adlandırılmıştır; reset_inactivity_timer() ismi, doğal olarak "hareketsizlik zamanlayıcısını sıfırla" şeklinde okunan giriş olayı yollarından çağrıldığı için korunmuştur.
Nasıl düzeltilir
- linux linux_kernel6.18.32, 7.0.9 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 6.15 ≤ v < 6.18.32, 6.19 ≤ v < 7.0.9, 7.1 | 6.18.32, 7.0.9 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.