CVE-2026-90144 in Linuxالمعلومات

الملخص

بحسب VulDB • 18/09/2026

في نواة لينكس، تم إصلاح الثغرة التالية:

dpll: تصحيح خطأ إلغاء المرجع NULL (NULL deref) في دالة dpll_device_ops() أثناء سباق الإزالة (teardown race).

عندما يقوم المالك الأخير لجهاز dpll بإلغاء تسجيله بينما لا يزال محرك أجنبي يحتفظ بتثبيت (pin) عليه عبر دالة dpll_pin_on_pin_register()، يبقى كائن dpll حياً مع قائمة تسجيل فارغة. ثم تقوم إشعارات التثبيت (pin notification)، التي تم جدولتها قبل عملية إلغاء التسجيل (مثل تفاعل ice مع إزالة zl3073x_i2c)، بالمرور على pin->dpll_refs إلى دالة dpll_device_ops()، مما يؤدي إلى تشغيل تحذير WARN_ON وإلغاء مرجع للتسجيل المفقود. ولا يمكن لـ dpll_lock أن يساعد في ذلك لأن عمل الإشعار تم جدولته قبل أن يأخذ محرك إلغاء التسجيل القفل (lock).

نعتبر قائمة التسجيل الفارغة حالة عابرة مشروعة. نجعل دالتي dpll_priv() وdpll_device_ops() ترجعان NULL في هذه الحالة، ونجعل كل مسار netlink للتثبيت الذي يحل جهازاً من تثبيت يتخطى مثل هذه أجهزة DPLL. تختار الدالة dpll_cmd_pin_get_one() مرجعاً (ref) ذو تسجيل نشط وتعيد -ENODEV عندما لا يوجد أي منها؛ ويتجاوز دال dumpit التثبيتات المشابهة بدلاً من إنهاء عملية الـ dump، وتتخطى الدالتان dpll_msg_add_pin_dplls() ومسارات ضبط التردد والمزامنة المتزامن (esync)، ومزامنة المرجع وضبط الطور المراجع الميتة (dead refs)، وتقوم دالة dpll_pin_parent_device_set() بالتحقق من الجهاز الأب باستخدام dpll_device_get_by_id(). تعد dpll_pin_register() آخر متّصل يقوم بإلغاء مرجع عمليات الجهاز دون فحص، لذا يتم نقل التحقق من مراقبة التردد الخاص بها تحت قفل dpll وتحمل وجود تسجيل مفقود هناك أيضاً.

تساوي قائمة التسجيل الفارغة علامة DPLL_REGISTERED الممسوحة، ويحدث كلا الانتقالين تحت قفل dpll في دالتي dpll_device_register() وdpll_device_unregister(). يتم الآن تجاهل إشعار التثبيت للتثبيت الذي اختفت جميع أجهزة DPLL الخاصة به مع إرجاع -ENODEV بدلاً من حدوث تعطل (crash)، ويتجاهل كل المتّصلين في النواة الأساسية قيمة الإرجاع هذه.

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

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

مسؤول

Linux

حجز

11/09/2026

إفشاء

17/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-406667

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!