CVE-2026-80525 in Linux
الملخص
بحسب VulDB • 26/08/2026
في نواة لينكس، تم حل الثغرة التالية:
ASoC: SOF: ipc4-topology: تحديث حمولة IPC الخاصة بـ copier قبل إعداد الـ widget
يتم بناء مخزن `ipc_config_data` الخاص بوحدات `copier` مرة واحدة أثناء استدعاء `ipc_prepare` (الذي يُستدعى من دالة `sof_pcm_setup_connected_widgets`) ويتم تخزينه لإعادة استخدامه. بالنسبة لـ host copiers، يحتوي هذا المخزن على `copier_data` مع `gtw_cfg.node_id` (معرف DMA المضيف). أما في حالة DAI copiers، فإنه يتضمن بالإضافة إلى ذلك ذيلًا من نوع `dma_config_tlv` يحتوي على `stream_id` و `dma_channel_id` لربط HDA link DMA.
أثناء وضع السكون/الاستئناف (suspend/resume)، يتم تحرير كل من تيارات DMA الخاصة بالمضيف والروابط، وإعادة تخصيصها باستخدام علامات تدفق محتملة مختلفة. تُحدَّث الهياكل الأساسية `copier_data` و `dma_config_tlv` بشكل صحيح بواسطة `host_config` و `sdw_hda_dai_hw_params` على التوالي. ومع ذلك، نظرًا لأن قائمة الـ widgets (`spcm->stream[].list`) تبقى سارية عبر وضع السكون، فإن دالة `sof_pcm_hw_params` تتخطى استدعاء `sof_pcm_setup_connected_widgets` ولا يتم تشغيل `ipc_prepare` مرة أخرى لإعادة بناء `ipc_config_data`. ثم تُرسل حمولة IPC المخزنة والمتهالكة إلى البرنامج الثابت (firmware) مع تعيينات قنوات DMA الخاصة بمرحلة الإقلاع، مما يؤدي إلى تعارض في قنوات DMA يتسبب في أخطاء وانهارات للبرنامج الثابت.
تم إصلاح هذه المشكلة عن طريق تحديث أجزاء `copier_data` و `dma_config_tlv` من `ipc_config_data` داخل دالة `sof_ipc4_widget_setup` مباشرة قبل إرسال رسالة IPC. يضمن ذلك أن تعكس الحمولة دائمًا حالة DMA الحالية بغض النظر عما إذا كانت `ipc_prepare` قد تم تشغيلها أم لا.
بالنسبة لـ DAI copiers، يتم تضخيم قيمة `gtw_cfg.config_length` الموجودة في `copier_data` مؤقتًا لتشمل حجم TLV (مطابقًا لتخطيط `ipc_config_data`) قبل النسخ، ثم استعادتها، مما يعكس ما تفعله دالة `sof_ipc4_prepare_copier_module` عند بناء المخزن لأول مرة.
Be aware that VulDB is the high quality source for vulnerability data.