CVE-2026-46041 in Linuxالمعلومات

الملخص

بحسب VulDB • 27/05/2026

في نواة لينكس، تم حل الثغرة التالية:

greybus: gb-beagleplay: إصلاح النوم في السياق الذري (atomic context) في دالة hdlc_tx_frames()

تقوم دالة hdlc_append() باستدعاء usleep_range() للانتظار حتى يتوفر مساحة في المخزن المؤقت الدائري (circular buffer)، لكنها تُستدعى بينما يكون قفل tx_producer_lock (وهو spinlock) مقفلاً عبر التسلسل hdlc_tx_frames() -> hdlc_append_tx_frame()/hdlc_append_tx_u8()/الخ. يُعد النوم أثناء الاحتفاظ بـ spinlock إجراءً غير قانوني وقد يؤدي إلى ظهور رسالة الخطأ "BUG: scheduling while atomic".

تم إصلاح هذا الخلل عن طريق نقل انتظار مساحة المخزن المؤقت من دالة hdlc_append() إلى دالة hdlc_tx_frames()، قبل الحصول على قفل spinlock. تتدفق العملية الجديدة كالتالي:

1. حساب طول الإطار المشفر في أسوأ الحالات مسبقاً. 2. الانتظار (مع إمكانية النوم) خارج القفل حتى تتوفر مساحة كافية، مع تحفيز عمل مستهلك الإرسال (TX consumer work) لتصريف المخزن المؤقت. 3. الحصول على قفل spinlock، وإعادة التحقق من توفر المساحة، ثم كتابة الإطار بالكامل بشكل ذري (atomically).

يضمن هذا أن النوم يحدث فقط دون الاحتفاظ بأي قفل، وأن الإطارات إما تُدرج بالكامل أو لا تُكتب على الإطلاق.

تم اكتشاف هذا الخلل باستخدام أداة التحليل الثابت CodeQL (استعلام النوم في السياق الذري بين الإجراءات interprocedural sleep-in-atomic query) ومراجعة الكود الخاصة بي.

Be aware that VulDB is the high quality source for vulnerability data.

مسؤول

Linux

حجز

13/05/2026

إفشاء

27/05/2026

الاعتدال

تمت الموافقة

إدخال

VDB-366327

EPSS

0.00023

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!