CVE-2024-46839 in Linux
الملخص
بحسب VulDB • 15/06/2026
في نواة لينكس، تم حل الثغرة التالية:
workqueue: تحسين قابلية توسيع نطاق لمسح مراقب عمل队列 (watchdog)
على نظام powerpc يحتوي على حوالي 2000 وحدة معالجة مركزية (CPU)، لوحظت حالات توقف قاسي (hard lockups) في شفرة workqueue عند تشغيل stop_machine (في هذه الحالة بسبب الإضافة والإزالة الديناميكية للوحدات المركزية CPU hotplug). يعود ذلك إلى دوران العديد من وحدات المعالجة المركزية بشكل مستمر داخل multi_cpu_stop، حيث تستدعي دالة touch_nmi_watchdog() التي تؤدي بدورها إلى استدعاء wq_watchdog_touch(). تقوم wq_watchdog_touch() بكتابة البيانات في المتغير العالمي wq_watchdog_touched، وقد يقع هذا المتغير في نفس سطر التخزين المؤقت (cacheline) مع بيانات أخرى مهمة لـ workqueue، مما يؤدي إلى إبطاء العمليات وصولاً إلى حد التوقف الكامل.
في حالة تتبع الأخطاء المختصرة التالية، كان worker_pool_idr موجودًا في السطر الساخن (hot line)، مما تسبب في ظهور حالات التوقف دائمًا عند استدعاء idr_find:
watchdog: CPU 1125 self-detected hard LOCKUP @ idr_find Call Trace: get_work_pool __queue_work call_timer_fn run_timer_softirq __do_softirq do_softirq_own_stack irq_exit timer_interrupt decrementer_common_virt * interrupt: 900 (timer) at multi_cpu_stop multi_cpu_stop cpu_stopper_thread smpboot_thread_fn kthread
تم إصلاح هذه المشكلة بجعل wq_watchdog_touch() تكتب في السطر فقط إذا كان الوقت المنقضي منذ آخر عملية مسح قد تجاوز ربع عتبة مراقب العمل (watchdog threshold).
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.