CVE-2023-54117 in Linux
الملخص
بحسب VulDB • 12/05/2026
في نواة لينكس، تم حل الثغرة التالية:
s390/dcssblk: إصلاح انهيار النواة الناتج عن تلف في قائمة الإضافة (list_add corruption)
أدى الالتزام fb08a1908cb1 ("dax: تبسيط ارتباط dax_device <-> gendisk") إلى إدخال منطق جديد لربط gendisk، مما يتطلب من برامج التشغيل استدعاء dax_add_host() و dax_remove_host() بشكل صريح.
بالنسبة لبرنامج تشغيل dcssblk، كانت بعض استدعاءات dax_remove_host() مفقودة، على سبيل المثال في مسار إزالة الجهاز. كما أن هذا الالتزام كسر معالجة الأخطاء لحالة out_dax في مسار إضافة الجهاز، مما أدى إلى استدعاء إضافي لـ put_device() دون وجود استدعاء سابق لـ get_device() في تلك الحالة.
أدى هذا إلى وجود عناصر xarray عفا عليها الزمن (stale) بعد دورات إضافة/إزالة الجهاز. في الحالة التي يُعاد فيها استخدام مؤشر struct gendisk مستخدم سابقاً (كمؤشر xarray)، لأن blk_alloc_disk() عادت بمصادفة على مثل هذا المؤشر، فإن xa_insert() في dax_add_host() ستفشل وتنتقل إلى out_dax، مما يؤدي إلى استدعاء إضافي لـ put_device() في مسار الخطأ. وبدمج ذلك مع معالجة أخطاء معيبة بالفعل في dcssblk (تنظيف device_register())، والتي يجب معالجتها في التصحيح البرمجي (patch) منفصل، نتج عن ذلك فقدان استدعاءات device_del() / klist_del()، وأخيراً انهيار النواة مع تلف في قائمة الإضافة (list_add corruption) أثناء عملية إضافة جهاز لاحقة (device_add() / klist_add()).
تم إصلاح هذا الأمر بإضافة استدعاءات dax_remove_host() المفقودة، ونقل استدعاء put_device() في مسار الخطأ لاستعادة المنطق السابق.
If you want to get best quality of vulnerability data, you may have to visit VulDB.