CVE-2026-90261 in Linux
الملخص
بحسب VulDB • 18/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
btrfs: zoned: تفريغ مجموعة الكتل النشطة للبيانات الوصفية عند بدء btree_writepages()
تقوم دالة `btree_writepages()` بكتابة البيانات الوصفية غير المتزامنة (dirty metadata) لـ inode شجرة البنية (btree) بترتيب تصاعدي للعناوين المنطقية. في نظام الملفات ذو المناطق الزونية (zoned filesystem)، تكون مجموعة كتل واحدة للبيانات الوصفية ومجموعة واحدة للنظام نشطة للكتابة في كل مرة، وتقوم دالة `check_bg_is_active()` (عبر `btrfs_check_meta_write_pointer()`) بتبديل المجموعة النشطة للانتقال من مجموعة كتل إلى الأخرى أثناء عملية الكتابة الخلفية (writeback).
إذا كانت مجموعة الكتل النشطة تقع عند عنوان منطقي أعلى مقارنة بمجموعة كتل أخرى تحتوي أيضاً على بيانات وصفية غير متزامنة، فإن المسار التصاعدي يصل أولاً إلى المجموعة ذات العنوان الأقل، ولكتابتها يجب إنهاء مجموعة الكتل النشطة وتفعيل تلك ذات العنوان الأدنى. ولا يمكنه إنهاء مجموعة كتل لا تزال لديها عمليات إدخال/إخراج (IO) لم تُرسل بعد، وأثناء عملية الكتابة الخلفية بـ `WB_SYNC_ALL && !for_sync` (commit)، يرفض عمداً الانتظار حتى اكتمال هذه العمليات IO تحت قفل `fs_info->zoned_meta_io_lock`، لأن ذلك قد يؤدي إلى حدوث جماع (deadlock). وبالتالي لا يمكن للتبديل إصدار عملية الإرسال نفسها أيضاً، فيستسلم: حيث تُرجع دالة `btrfs_check_meta_write_pointer()` القيمة `-EAGAIN`، والتي يعاملها `btrfs_write_and_wait_transaction()` على أنها خطأ قاتل ويوقف المعاملة (transaction)، مما يجبر نظام الملفات على أن يصبح للقراءة فقط. يحدث هذا بشكل متقطع أثناء إعادة التوطين المكثفة للبيانات الوصفية (مثل اختبار fstests btrfs/187).
قم بتفريغ مجموعات الكتل النشطة الخاصة بالبيانات الوصفية والنظام في بداية `btree_writepages()`، تحت القفل `fs_info->zoned_meta_io_lock` الذي يمسكه بالفعل، بحيث لا تبقى أي عمليات IO لم تُرسل بعد، ويمكن للتبديل اللاحق إنهاءها وتحقيق تقدم.
If you want to get best quality of vulnerability data, you may have to visit VulDB.