CVE-2026-90144
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: dpll: teardown yarışı sırasında dpll_device_ops() fonksiyonundaki NULL deref hatası düzeltildi Bir dpll cihazının son sahibi, yabancı bir sürücü hala dpll_pin_on_pin_register() aracılığıyla üzerinde bir pine sahipken kaydı sildiğinde, dpll nesnesi boş bir kayıt listesiyle hayatta kalır. Kayıt silme işleminden önce kuyruğa alınmış bir pin bildirimi (örneğin, zl3073x_i2c kaldırılmasına tepki veren ice), pin->dpll_refs üzerinden dpll_device_ops() fonksiyonuna girer; bu durum WARN_ON tetikler ve eksik olan kayda erişmeye çalışarak (dereference) çökmeye neden olur. Bildirim işi, kaydı silen sürücü kilidi almadan önce kuyruğa alındığı için dpll_lock yardımcı olamaz. Boş kayıt listesi meşru bir geçici durum olarak kabul edilmiştir. Bu durumda dpll_priv() ve dpll_device_ops() fonksiyonlarının NULL döndürmesi sağlanmış ve bir pinden cihaz çözümleyen her pin netlink yolu bu tür dpll'leri atlayacak şekilde düzenlenmiştir. dpll_cmd_pin_get_one() canlı bir kaydı olan referansı seçer ve hiç yoksa -ENODEV döndürür; pin dumpit işlemi dökümü durdurmak yerine böyle bir pini atlar; dpll_msg_add_pin_dplls() ile frekans, esync, referans senkronizasyonu ve faz ayarı set yolları ölü referansları atlar ve dpll_pin_parent_device_set() üst cihazı dpll_device_get_by_id() ile doğrular. dpll_pin_register(), kontrol yapmadan cihaz operasyonlarına erişen son çağrıcıdır; bu nedenle frekans monitörü doğrulaması dpll_lock altına taşınmış ve burada da eksik kayıt durumu tolere edilmiştir. Boş kayıt listesi, temizlenmiş bir DPLL_REGISTERED işareti ile eşdeğerdir; her iki geçiş de dpll_device_register() ve dpll_device_unregister() içinde dpll_lock altında gerçekleşir. Tüm dpll'leri gitmiş bir pin için gelen pin bildirimi artık sistemin çökmesi yerine -ENODEV ile düşürülür; çekirdekten tüm çağrıcılar bu dönüş değerini görmezden gelir. WARNING: drivers/dpll/dpll_core.c:1092 at dpll_device_ops+0x24/0x40, CPU#83: kworker/u576:3/23471 Modules linked in: ... ice ... zl3073x_i2c(-) ... zl3073x ... Workqueue: ice_dpll_wq ice_dpll_pin_notify_work [ice] RIP: 0010:dpll_device_ops+0x24/0x40 Call Trace: <TASK> dpll_cmd_pin_get_one+0x336/0x520 dpll_pin_event_send+0x82/0x140 dpll_pin_on_pin_unregister+0xbb/0x160 ice_dpll_pin_notify_work+0x1bc/0x1f0 [ice] process_one_work+0x19e/0x370 worker_thread+0x1a6/0x310 kthread+0xe4/0x120 ret_from_fork+0x1a1/0x270 ret_from_fork_asm+0x1a/0x30 </TASK> ---[ end trace 0000000000000000 ]--- BUG: kernel NULL pointer dereference, address: 0000000000000010 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page
Nasıl düzeltilir
- Linux Linux7d9661d6ef60bee705a3bb220dc59f10d9155c31, d39da3ff8d39c31761bf1698bc02a5a206722136, fdbf04e3e01a872d0ef2149f846f1a3e3cb54f5b, 33f016b23a219fe034213849b51436b8e79df251 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 9431063ad323ac864750aeba4d304389bc42ca4e ≤ v < 7d9661d6ef60bee705a3bb220dc59f10d9155c31, 9431063ad323ac864750aeba4d304389bc42ca4e ≤ v < d39da3ff8d39c31761bf1698bc02a5a206722136, 9431063ad323ac864750aeba4d304389bc42ca4e ≤ v < fdbf04e3e01a872d0ef2149f846f1a3e3cb54f5b, 9431063ad323ac864750aeba4d304389bc42ca4e ≤ v < 33f016b23a219fe034213849b51436b8e79df251, 6.7 | 7d9661d6ef60bee705a3bb220dc59f10d9155c31, d39da3ff8d39c31761bf1698bc02a5a206722136, fdbf04e3e01a872d0ef2149f846f1a3e3cb54f5b, 33f016b23a219fe034213849b51436b8e79df251 |
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.