ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.
الملخص
تم حل الثغرة التالية في Linux kernel: في firewire: core، تم إصلاح حالة سباق (race condition) في معالجة المعاملات المجزأة (split transactions). ففي المعاملة المجزأة، قد تعدل إما fw_core_handle_response() أو split_transaction_timeout_callback() نفس مدخل المعاملة في قائمة المعاملات المعلقة. وتُستخدم القيمة المعادة من timer_delete() لتحديد أي الدالتين تتولى معالجة المدخل. إذا كانت المعاملة مجزأة وأعادت timer_delete() القيمة صفر، فقد تكون دالة رد نداء انتهاء المهلة قيد التشغيل بالفعل. في هذه الحالة، يجب على معالج الاستجابة ترك المدخل في القائمة لتتولى دالة رد نداء المهلة حذفه. تسببت إعادة هيكلة سابقة للشيفرة في كسر هذا السلوك، مما أدى إلى إدخال حالة سباق يمكن أن تعالج فيها كلتا الدالتين المعاملة نفسها، مما قد يؤدي إلى استخدام بعد الإلغاء (use-after-free) لدى بادئ المعاملة. تم إصلاح هذا التراجع بضمان عدم معالجة معالج الاستجابة للمعاملة عندما تعيد timer_delete() القيمة صفر، مع ترك مهمة إزالة المدخل من قائمة المعاملات المعلقة لدالة رد نداء انتهاء المهلة.