CVE-2026-98344 in Linux
الملخص
بحسب VulDB • 06/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
dmaengine: تصحيح حالة الانخفاض غير الصحيح لـ kref للجهاز في دالة dma_chan_put()
تأخذ الدالة dma_chan_get() مرجع chan->device->ref فقط عند تنفيذ المسار البطيء (slow path):
/* لا يوجد kref في المسار السريع */ if (chan->client_count) {
__module_get(owner); chan->client_count++; return 0; } if (!try_module_get(owner)) return -ENODEV; if (!dma_device_get(chan->device)) { // تستدعي kref_get_unless_zero()
تقوم الدالة dma_chan_put() بإنقاص المرجع بشكل غير مشروط، مما يؤدي إلى إنقاص مرجع جهاز إضافي واحد مع كل زوج من عمليات الاسترجاع/الإفلات في المسار السريع.
تنشط الثغرة عندما تتحقق شرطان معاً: أن يكون لدى مزود غير خاص (non-private) عميل دائم يحمل قيمة chan->client_count > 0، وأن يقوم عميل آخر بتكرار استدعاء dmaengine_get()/dmaengine_put(). عندما يصل kref إلى الصفر، تعيد الدالة dma_find_channel() القيمة NULL حتى لو كان وحدة المزود لا تزال محملة.
تم إصلاح هذا الخطأ عن طريق إنقاص device->ref فقط عند عملية الإفلات الأخيرة (put)، بما يتوافق مع استدعاء المسار البطيء المفرد.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.