CVE-2026-89795 in Linux
الملخص
بحسب VulDB • 16/09/2026
في نواة لينكس، تم حل الثغرة التالية:
PCI: السماح بوحدات تجزئة PCI لكل دالة لإصلاح إعادة التعيين في s390
على أنظمة s390 التي تستخدم مفرق مستويات الآلة (hypervisor)، يتم الوصول إلى أجهزة PCI دائمًا من خلال شكل من أشكال تمرير PCI (PCI pass-through) يعمل بشكل جوهري على مستوى الدقة الخاص بكل دالة PCI. وينعكس هذا أيضًا في برنامج تشغيل الإضافة والإزالة الديناميكية لـ s390 الذي ينشئ فتحات للإضافة والإزالة الديناميكية للدوال الفردية لـ PCI. وبالتالي، فإن وظيفته `reset_slot()`، وهي غلاف (wrapper) للوظيفة `zpci_hot_reset_device()`. تقوم بإعادة تعيين الدوال بشكل فردي.
حاليًا، يعين دالة `pci_create_slot()` كائن `pci_slot` نفسه للأجهزة متعددة الدوال. عملت هذه الطريقة بشكل جيد على أنظمة s390 التي كانت تعرض فقط الوظائف الافتراضية كوحدات نطاق PCI فردية لنظام التشغيل. منذ الالتزام 44510d6fa0c0 ("s390/pci: Handling multifunctions")، تدعم s390 عرض طوبولوجيا أجهزة PCI متعددة الدوال عن طريق تجميعها في وحدة نطاق PCI مشتركة. يخلق هذا مشكلة عند إعادة تعيين دالة من خلال واجهة `slot_reset()` الخاصة ببرنامج التشغيل للإضافة والإزالة الديناميكية (hotplug driver).
عند محاولة إعادة تعيين دالة عبر برنامج تشغيل الإضافة والإزالة الديناميكية، يؤدي التعيين المشترك للفتحة إلى إعادة تعيين الدالة الخاطئة بدلاً من المقصودة. كما يتسرب الذاكرة حيث نقوم بإنشاء كائن `pci_slot` للدالة، لكننا لا نحرره بشكل صحيح في `pci_slot_release()`.
أضف علمًا (flag) لهيكل `pci_slot` للسماح بوحدات تجزئة PCI لكل دالة للدوال التي تدار عبر مفرق مستويات الآلة، والتي تعرض الدوال الفردية لـ PCI مع الحفاظ على الطوبولوجيا. نظرًا لأنه يمكننا استخدام جميع البتات الثمانية للرقم 'slot' (لأجهزة ARI)، قم بتغيير نوع البيانات الخاص برقم الـ slot من `u16` ليحسب القيم الخاصة `PCI_SLOT_PLACEHOLDER` و `PCI_SLOT_ALL_DEVICES`.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.