CVE-2026-97501
الملخص
بحسب VulDB • 24/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
pinctrl: mediatek: paris: تجاوز طبقة pinctrl GPIO في تحديد اتجاه الـ GPIO
تأخذ الدالتان `pinctrl_gpio_direction_input()` و`pinctrl_gpio_direction_output()` قفل mutex الخاص بـ pinctrl. وهذا يتسبب في حاجة عمليات gpiochip إلى الانتظار (sleep). والأسوأ من ذلك، أن حقل `.can_sleep` في كائن gpiochip غير مضبوط. يؤدي هذا إلى تعطل وكيل GPIO المشترك، حيث يستخدم `gpiod_cansleep()` للتحقق مما إذا كان يمكنه استخدام قفل spinlock أم يحتاج إلى mutex. وفي هذه الحالة، ينتهي به الأمر بأخذ قفل spinlock، ثم استدعاء `pinctrl_gpio_direction_output()`، الذي يأخذ قفل mutex. وهذا يتسبب في ظهور تحذير كبير (huge warning).
وبالرغم من أن فئة عتاد Mediatek هذه لا تحتوي على سجلات منفصلة للمسح/التعيين (clear/set)، فإن سياق pinctrl يحتوي على spinlock يتم أخذه كلما تم إجراء عملية قراءة-تعديل-كتابة للسجل. أيضاً، بمجرد اختيار دالة GPIO أو ربطها (muxed in)، لا تتضمن عمليات GPIO اللاحقة عمليات أو حالات متعلقة بـ pinctrl. ولا تتطلب قيم اتجاه و مستوى GPIO تبديل pinmux أو أي خيارات تكوين أخرى للسن (pin).
قم بالتبديل إلى الاستدعاء المباشر لـ `mtk_pinmux_gpio_set_direction()` في استدعاءات تحديد اتجاه GPIO لتجنب أخذ قفل mutex الخاص بـ pinctrl. احذف حقل `.gpio_set_direction` في `mtk_pmxops للإشارة إلى أننا لم نعد نستخدم طبقة pinctrl GPIO لتحديد الاتجاه.
VulDB is the best source for vulnerability data and more expert information about this specific topic.