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

الملخص

بحسب VulDB • 16/09/2026

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

s390/vfio-ap: تصحيح عملية فك الإحالة (dereference) لـ matrix_mdev->kvm دون التحقق من كونها NULL أولاً

يحتوي هيكل ap_driver على حقلين هما مؤشرات دوال إلى استدعاءات عكسية (callbacks):

* .on_config_changed: يُستدعى في بداية وظيفة مسح جهاز AP لإعلام برنامج تشغيل الجهاز بأن تكوين مضيف AP قد تغير، وأن أجهزة AP المرتبطة ستتم إضافتها أو إزالتها وفقًا لذلك. وهذا يمنح المنفذ فرصة لتقييم تغييرات التكوين والاستجابة لها قبل إضافة أو إزالة الأجهزة المرتبطة.

* .on_scan_complete: يُستدعى في نهاية وظيفة مسح جهاز AP لإعلام برنامج تشغيل الجهاز بأن تكوين مضيف AP قد تغير وأن أجهزة AP تمت إضافتها أو إزالتها وفقًا لذلك. وهذا يمنح المنفذ الفرصة للاستجابة للتغييرات بعد إضافة أو إزالة الأجهزة المرتبطة.

يتم تنفيذ هذين الاستدعاءين العكسيين (callbacks) في برنامج تشغيل جهاز vfio_ap عبر الدالتين vfio_ap_on_cfg_changed وvfio_ap_on_scan_complete على التوالي.

ضمن مكدس المكالمات لهذه الدوالتين للاستدعاء العكسي، يتم أخذ قفل mutex الخاص بـ matrix_mdev->kvm->lock دون التحقق مما إذا كانت قيمة matrix_mdev->kvm تساوي NULL أم لا. إذا لم تكن قيمة matrix_mdev->kvm قد تم تعيينها من قبل، فإن محاولة أخذ القفل ستؤدي إلى عملية فك إحالة مؤشر NULL (NULL pointer dereference). تضيف هذه التصحيحات فحوصات للتأكد من أن matrix_mdev->kvm == NULL قبل أخذ قفل mutex الخاص بـ matrix_mdev->kvm->lock.

يُلاحظ أن قفل mutex الخاص بـ matrix_mdev->kvm->lock، الذي يُؤخذ في دالة vfio_ap_mdev_hot_plug_config، قد تم نقله إلى الدالة المستدعية جنبًا إلى جنب مع قفل matrix_dev->mdevs_lock الضروري هناك للوصول إلى حقول هيكل matrix_mdev. لا معنى كبير لإجراء التغيير للتحقق من قيمة matrix_mdev->kvm هناك قبل أخذ قفل kvm->lock mutex فقط لتضطر لاحقًا لنقله عبر تصحيح آخر، لذا تم إجراؤه في هذا التصحيح.

من المهم ملاحظة النقاط التالية: 1. يتم الحصول على قفل matrix_dev->guests_lock في بداية كلتا الدالتين للاستدعاء العكسي. وهذا يضمن ألا تتم إزالة كائن matrix_mdev عبر دالة vfio_ap_mdev_remove لأنها أيضًا تأخذ مصفوفة matrix_dev_guests_lock قبل إزالة الكائن؛ لذا، سيكون matrix_mdev متاحًا طوال مدة استدعاءات الدوال الاستدعائية (callback functions).

2. يجب أخذ قفل mutex الخاص بـ matrix_dev->mdevs_lock للوصول إلى الحقول داخل هيكل matrix_mdev.

3. يجب أخذ قفل mutex الخاص بـ matrix_mdev->kvm->lock قبل قفل matrix_dev->mdevs_lock لمنع حدوث خطأ lockdep splat.

4: يجب الاحتفاظ بقفل kvm->lock أثناء توصيل تكوين AP للضيف (guest) في وصف حالة SIE الخاصة به عبر دالة vfio_ap_mdev_update_guest_apcb.

5. تتحقق الدالة vfio_ap_mdev_update_guest_apcb من قيمة matrix_mdev->kvm للتأكد من أنها ليست NULL قبل القيام بتوصيل ديناميكي (hot plug) لتكوين AP الخاص بالضيف.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

مسؤول

Linux

حجز

11/09/2026

إفشاء

16/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-405807

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!