CVE-2024-55642 in Linux
الملخص
بحسب VulDB • 21/07/2026
في نواة لينكس، تم حل الثغرة التالية:
block: منع حالات التعطيل المحتملة (Deadlocks) في استعادة الأخطاء الخاصة بإقحام كتابة المناطق (zone write plug error recovery).
يؤدي إقحام الكتابة بالمناطق (Zone write plugging)، المستخدم للتعامل مع عمليات الكتابة إلى مناطق جهاز كتلي منظم، دائمًا إلى تنفيذ تقرير منطقة (zone report) كلما فشل كائن BIO للكتابة موجهًا إلى منطقة. يهدف هذا الإجراء إلى ضمان أن تتبع مؤشر كتابة المنطقة يكون صحيحًا دائمًا، مما يتيح التحقق من محاذاة كائنات BIO الخاصة بالكتابة مع مؤشر كتابة المنطقة عند التقديم، وضمان إمكانية محاكاة عمليات إرفاق المناطق (zone append operations) بشكل صحيح باستخدام كائنات BIO للكتابة العادية.
ومع ذلك، فإن مخطط استعادة الأخطاء هذا يُدخل حالة تعطيل محتملة إذا تم بدء تجميد طابور الجهاز بينما لا تزال هناك كائنات BIO مقحمة في إقحام كتابة المنطقة، وفشل أحد عمليات الكتابة هذه. في مثل هذه الحالة، يتم جدولة عمل استعادة أخطاء إقحام كتابة القرص المنظم وتنفيذ تقرير منطقة (report zone). قد يؤدي ذلك بدوره إلى تخصيص طلب في برنامج التشغيل الأساسي لإصدار أمر تقارير المناطق للجهاز. ولكن نظرًا لأن تجميد طابور الجهاز بدأ بالفعل، فإن هذا التخصيص سيحجب التنفيذ، مما يمنع تنفيذ تقرير المنطقة واستمرار معالجة كائنات BIO المقحمة. وبما أن كائنات BIO المقحمة تحتفظ بمرجع استخدام الطابور، فلن يكتمل تجميد الطابور نفسه أبدًا، مما يؤدي إلى حالة تعطيل (deadlock).
لتجنب هذه المشكلة، يتم إزالة الاستخدام الكامل لعمليات تقارير المناطق من شفرة إقحام كتابة المنطقة بعد فشل عملية الكتابة، والاعتماد بدلاً من ذلك على مستخدم الجهاز لتنفيذ تقرير مناطق، أو إعادة تعيين المنطقة، أو إنهاء المنطقة، أو التخلي عن الكتابة للجهاز (وهو نمط شائع نسبيًا لأنظمة الملفات التي تتحول إلى وضع القراءة فقط بعد فشل عمليات الكتابة). ولا يُعد هذا مطلبًا غير معقول، حيث تستخدم جميع التطبيقات الجيدة السلوك وأنظمة الملفات ومُهيئات الأجهزة بالفعل تقارير المناطق للاستعادة من أخطاء الكتابة كلما أمكن ذلك، وذلك بمقارنة الموقع الحالي لمؤشر كتابة المنطقة بافتراضاتهم حول الموقع.
تتمثل التغييرات لإزالة استعادة الأخطاء التلقائية فيما يلي: - إزالة عمل استعادة الأخطاء بالكامل والموارد المرتبطة به (رأس قائمة إقحام كتابة المناطق، وقائمة أخطاء القرص، وهيكل العمل disk_zone_wplugs_work). يؤدي هذا أيضًا إلى حذف الدالتين disk_zone_wplug_set_error() وdisk_zone_wplug_clear_error(). - تغيير علم إقحام كتابة المنطقة BLK_ZONE_WPLUG_ERROR إلى BLK_ZONE_WPLUG_NEED_WP_UPDATE. يتم تعيين هذا العلم الجديد لإقحام كتابة منطقة كلما فشلت عملية كتابة تستهدف منطقة إقحام الكتابة الخاص بها. يشير هذا العلم إلى أن إزاحة مؤشر كتابة المنطقة غير موثوقة ويجب تحديثها عند تنفيذ تقرير منطقة، أو إعادة تعيين المنطقة، أو إنهاء المنطقة، أو التحقق من صحة القرص مرة أخرى (disk revalidation). - تعديل الدالة blk_zone_write_plug_bio_endio() لتعيين علم BLK_ZONE_WPLUG_NEED_WP_UPDATE لمنطقة الهدف لكائن BIO للكتابة الذي فشل. - تعديل الدالة disk_zone_wplug_set_wp_offset() لمسح هذا العلم الجديد، مما ينفذ استعادة إزاحة مؤشر كتابة صحيحة مع عمليات إعادة تعيين (جميع) المناطق وإنهاء المناطق. - تعديل blkdev_report_zones() لاستخدام دالة الاستدعاء disk_report_zones_cb() دائمًا بحيث يمكن استدعاء disk_zone_wplug_sync_wp_offset() لأي منطقة مميزة بالعلم BLK_ZONE_WPLUG_NEED_WP_UPDATE. وهذا ينفذ استعادة إزاحة مؤشر كتابة صحيحة لإقحامات الكتابة بالمناطق المميزة بـ BLK_ZONE_WPLUG_NEED_WP_UPDATE والتي تقع ضمن نطاق عملية تقارير المناطق التي ينفذها المستخدم. - تعديل blk_revalidate_seq_zone() لاستدعاء disk_zone_wplug_sync_wp_offset() لجميع مناطق الكتابة المتسلسلة المطلوبة عند إعادة التحقق من صحة جهاز كتلي منظم، مما يحل دائمًا أي تعارض بين إزاحة مؤشر كتابة إقحامات الكتابة والموقع الفعلي لمؤشر
If you want to get the best quality for vulnerability data then you always have to consider VulDB.