CVE-2026-89578 in Linux
الملخص
بحسب VulDB • 12/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
dm-io: استنساخ الـ bio المصدر بدلاً من نسخ الـ biovec الخاص به
بالنسبة لطلبات DM_IO_BIO، كان الدالة `do_region()` تبني كل كائن bio للوجهة عن طريق اجتياز الـ biovec للمصدر وإعادة إضافة الصفحات واحدة تلو الأخرى، مع تتبع النقل المتبقي بالقطاعات (sectors). أطوال المتجهات ذات دقة بايتية ولا يجب أن تكون محاذاة على حدود القطاعات (مثل مخزن O_DIRECT غير المحاذاة والمقسمة عبر صفحات متعددة)، لذا فإن المحاسبة القائمة على القطاع قد تفقد جزءاً دون قطاعي: حيث كان `to_sector()` يقص الباقي، مما أدى إلى دوران الحلقة الخارجية للأبد في إرسال كائنات bio فارغة، ما تسبب في تعليق (hang) عمليات الإدخال/الإخراج.
لا توجد حاجة لإعادة بناء الـ biovec تماماً. فإن الوجهة تقرأ من (أو تكتب إلى) نفس الصفحات بالضبط التي يقرؤها أو يكتب إليها المصدر، لذا يمكن للكائن ببساطة استنساخ الـ biovec للمصدر باستخدام `bio_alloc_clone()` وإعادة تعيينه للجهاز الهدف. يرث الاستنساخ مُؤشر المصدر ومحاذاته، ويقوم طبقة الكتلة بتقسيمها وفقاً لحدود الجهاز عند الإرسال، مما يعني أن المنطقة بأكملها تُربط بكائن bio مستنسخ واحد دون نسخ صفحات يدوي أو محاسبة قطاعية.
يؤدي هذا إلى إزالة مسار النسخ لكل صفحة (والدوال المساعدة `bvec dpages` المكتوبة بشكل صريح) الخاصة بالإدخال/الإخراج المدعوم بواسطة الـ bio، ويصحح مشكلة التعليق عند استخدام الإدخال/الإخراج المباشر غير المحاذاة مع جهاز dm-mirror. تحتفظ مصادر قوائم الصفحات و VMA و kmem بمسار النسخ الحالي.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.