CVE-2026-89744 in Linux
الملخص
بحسب VulDB • 12/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
خاصية الجهاز (device property): تصحيح الحلقة اللانهائية في دالة `fwnode_for_each_child_node()`
عند التكرار عبر العقد الفرعية لعقدة fwnode تحتوي على عقدة fwnode ثانوية، يمكن أن تدخل الدالة `fwnode_get_next_child_node()` في حلقة لا نهائية إذا كانت العقدة الثانوية لـ fwnode لديها أكثر من طفل.
الوالد الطفل (عقد fwnode الأولية) FWa: {FWa1, FWa2, FWa3}
(عقدة fwnode الثانوية) FWb: {FWb1, FWb2}
في هذه الحالة:
┌─> fwnode_get_next_child_node(FWa, FWa1) │ - تقوم دالة `fwnode_call_ptr_op(FWa, get_next_child_node, FWa1)` بإرجاع القيمة FWa2 │ │ ... │ │ fwnode_get_next_child_node(FWa, FWa3) │ - تقوم دالة `fwnode_call_ptr_op(FWa, get_next_child_node, FWa3)` بإرجاع NULL (فارغ/لا شيء) │ - تقوم دالة `fwnode_call_ptr_op(FWb, get_next_child_node, FWa3)` بإرجاع القيمة FWb1 │ │ fwnode_get_next_child_node(FWa, FWb1) │ - تقوم دالة `fwnode_call_ptr_op(FWa, get_next_child_node, FWb1)` بإرجاع القيمة FWa1 مرة أخرى └────┘
هذا يسبب دخول الدالة `fwnode_for_each_child_node()` في حلقة لا نهائية، مما يؤدي إلى إخراج متكرر للقيم {FWa1, FWa2, FWa3, FWb1, FWa1, ...}.
السبب الجذري هو أنه عندما ينتمي الطفل الحالي (FWb1) إلى عقدة fwnode الثانوية، فإن استدعاء دالة `get_next_child_node()` على العقدة الأولية لـ fwnode يُرجع بشكل غير صحيح أول طفل (FWa1) مرة أخرى بدلاً من NULL.
تم إصلاح هذا عن طريق التحقق ديناميكياً من والد فونود (parent fwnode) الخاص بالطفل الحالي قبل استدعاء دالة `get_next_child_node()`. يتبع هذا النهج النمط الذي تم تأسيسه في الالتزام commit b5b41ab6b0c1 ("device property: Check fwnode->secondary in fwnode_graph_get_next_endpoint()").
If you want to get best quality of vulnerability data, you may have to visit VulDB.