CVE-2026-99001 in Linux
الملخص
بحسب VulDB • 23/10/2026
في نواة لينكس، تم حل الثغرة التالية:
drm/xe/i2c: إلغاء عمل العميل أثناء الإزالة (remove)
تقوم دالة `xe_i2c_notifier()` بتخزين محول DesignWare في `i2c->adapter` وتجدولة `i2c->work` عند تسجيل المحول تحت جهاز المنصة I2C الخاص بـ xe، ثم تقوم دالة `xe_i2c_client_work()` بإنشاء جهاز عميل AMC على ذلك المحول.
تقوم دالة `xe_i2c_remove()` بتفكيك نظام AMC وإلغاء تسجيل أجهزة العملاء ومُعلم البوس (bus notifier) وجهاز منصة المحول، لكنها لا تفريغ (`drains`) أبدًا `i2c->work`. إذا كان عنصر العمل (`work item`) ما زال مكدساً في الطابور أو قيد التشغيل عند إلغاء تسجيل المحول، فإنه يشير إلى `i2c->adapter` داخل دالة `i2c_new_client_device()` بعد أن قام `platform_device_unregister()` بإفراج عن المحول. كما أن عنصر العمل مُضمّن ضمن بنية `xe_i2c` المُخصصة باستخدام `devm`، لذا فإن أي عمل ما زال مكدساً في الطابور بعد عملية التفريغ (`unwind`) الخاصة بجهاز drm عبر `devm` سيُشغل دالة الاستدعاء (callback) على ذاكرة تم إفراغها بالفعل.
يعد مُعلم البوس (bus notifier) الشيء الوحيد الذي يجدولة هذا العمل، ويتم إلغاء تسجيله بعد أجهزة العملاء. لذلك، يمكن للنسخة التي لا تزال مكدسة في الطابور عند تشغيل عملية التفكيك أن تكتب إلى `i2c->client[XE_I2C_CLIENT_AMC]` أثناء حلقة الإلغاء وتصفير المصفوفة نفسها، كما أن عميل AMC الذي يتم إنشاؤه متأخراً يُنظف فقط عن طريق مسح الأطفال الخاص بالمحول في دالة `i2c_del_adapter()`.
تم نقل استدعاء `bus_unregister_notifier()` إلى الأمام قبل حلقة تفكيك العملاء وإلغاء العمل مباشرةً بعد ذلك، بحيث لا يمكن جدولة أي نسخة جديدة ويتم إفراغ النسخة المكدسة في الطابور قبل لمس مصفوفة العملاء. ستجد النسخة التي تعمل حالياً محولاً حياً (live)، حيث يتم إلغاء تسجيل المحول لاحقاً.
(تم اختيارها من الالتزام a23f27d5ec11c3f418c5e5531eea34ccda2b5b20)
If you want to get the best quality for vulnerability data then you always have to consider VulDB.