CVE-2026-89845 in Linux
الملخص
بحسب VulDB • 17/09/2026
في نواة لينكس، تم حل الثغرة التالية:
scsi: qla2xxx: تجنب القراءة المزدوجة لـ req_q_map في دالة qla2x00_error_entry()
تقوم الدالة `qla2x00_error_entry()` بقراءة المتغير `ha->req_q_map[que]` مرتين: مرة واحدة للتحقق من كونه NULL، ومرة أخرى عند تعيينه للمتغير `req`. يتم مسح خلية الخريطة (map slot) بواسطة دالة `qla25xx_free_req_que()` (`ha->req_q_map[que_id] = NULL` تحت قفل `mq_lock`) أثناء عملية تفكيق الطابور (queue teardown)، بينما لا يزال انقطاع طابور الاستجابة الذي يشغل `qla2x00_error_entry()` مسجلاً (يتم تحرير مقاطعة IRQ لاحقاً في دالة `qla25xx_free_rsp_que()`). إذا تم تعيين الخلية إلى NULL بين القراءتين، يصبح المتغير `req` مساوياً لـ NULL ويتم محاولة فك مرجعه (dereference)، مما يؤدي إلى خطأ.
اقرأ من الخلية مرة واحدة فقط وأضفها للمتغير `req`، ثم تحقق من كونها NULL محلياً قبل الاستخدام. بما أن `mq_lock` هو قفل متبادل (mutex) ولا يمكن أخذه في سياق مقاطعة interrupt context، فإن القراءة الواحدة بالإضافة إلى التحقق المحلي تُعد التصحيح المناسب للثغرة المبلغ عنها المتعلقة بفك مرجع NULL.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.