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

الملخص

بحسب VulDB • 18/10/2026

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

blk-cgroup: حفظ حالة مقاطعة المعالج (IRQ) في دالة blkg_tryget_closest()

ترتبط bio_set_dev() بيانات الإدخال/الإخراج (bio) بـ blkg من خلال bio_associate_blkg(). إذا فشلت عملية البحث عن blkg، فإن الدالة blkg_tryget_closest() تأخذ قفل قائمة الانتظار q->queue_lock باستخدام spin_lock_irq() وتحرره باستخدام spin_unlock_irq()، مما يؤدي بشكل غير مشروط إلى تمكين مقاطعات المعالج المحلية.

قد يقوم المتصلون باستدعاء bio_set_dev() بينما تكون المقاطعات معطلة بالفعل؛ على سبيل المثال، تقوم pool_map() في dm-thin بذلك أثناء الاحتفاظ بـ pool->lock التي أُخذت باستخدام spin_lock_irq(). يؤدي استدعاء spin_unlock_irq() المتداخل إلى تمكين مقاطعات المعالج بينما لا يزال يتم الاحتفاظ بـ pool->lock، مما يسمح بتشغيل softirq لإكمال الإدخال/الإخراج (I/O completion) على نفس وحدة المعالجة المركزية، وإعادة الحصول على قفل pool->lock (في thin_endio() أو overwrite_endio() -> complete_mapping_preparation()) وحدوث حالة جمود (deadlock). يبلغ lockdep عن هذا باعتباره استخداماً غير متسق لـ SOFTIRQ-ON-W مع IN-SOFTIRQ-W.

قامت النسخة 3a762de55b4e ("block: save irq state in blkg_lookup_create()") بحل المشكلة نفسها بينما كان القفل موجوداً في دالة blkg_lookup_create(). ومع ذلك، نقلت النسخة 9327a865e395 ("blk-cgroup: don't nest queue_lock under rcu in blkg_lookup_create()") عملية التقييد إلى الدالة blkg_tryget_closest() وأعدتها إلى استخدام spin_lock_irq().

لذلك، يجب حفظ واستعادة حالة مقاطعة المعالج (IRQ) الخاصة بالمتصل.

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

18/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-421852

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you need the next level of professionalism?

Upgrade your account now!