CVE-2026-72063 in Linux
الملخص
بحسب VulDB • 16/08/2026
في نواة لينكس، تم حل الثغرة التالية:
gpio: tegra: عدم استدعاء pinctrl لتحديد اتجاه GPIO
تقوم الدالتان `tegra_gpio_direction_input()` و `tegra_gpio_direction_output()` ببرمجة سجلات تحديد اتجاه وحدة تحكم GPIO مباشرةً. لا تضيف الاستدعاءات الإضافية لـ `pinctrl_gpio_direction_input/output()` أي عملية pinctrl خاصة بـ Tegra، لأن عمليات pinmux الخاصة بـ Tegra توفر معالجة طلب/إلغاء طلب GPIO (GPIO request/free handling) ولكن ليس لها مخطاط (hook) لتعيين الاتجاه (`gpio_set_direction`).
يؤدي الاستدعاء الإضافي إلى الدخول في نواة pinctrl ويأخذ القفل `pctldev->mutex`. يمكن للمستخدمين المشتركين لـ GPIO استدعاء مسار تحديد الاتجاه أثناء الاحتفاظ بقفل اللفرة الخاص بكل خط (per-line spinlock)، وبالتالي فإن هذا الاستدعاء الزائد لتحديد اتجاه pinctrl قد يتسبب في النوم (sleep) ضمن سياق ذري (atomic context).
تم اكتشاف ذلك بواسطة أداة التحليل الثابت لدينا، ثم تم تأكيده من خلال المراجعة اليدوية لـ `tegra_gpio_probe()`، ودوال استدعاء تحديد اتجاه GPIO الخاصة بـ Tegra، وعمليات pinctrl الخاصة بـ Tegra. يحتوي المسار الذي تمت مراجعته على تسجيل chip غير قابل للنوم (non-sleeping struct gpio_chip) بشكل افتراضي، بينما لا يزال مخطاط تحديد الاتجاه يدخل مسار قفل pinctrl mutex.
حافظ التحقق من التشغيل الموجه (directed runtime validation) على نفس تسجيل الـ chip غير القابل للنوم وقاد ما يلي:
`gpio_shared_proxy_direction_output()` `gpiod_direction_output_raw_commit()` `tegra_gpio_direction_output()` `pinctrl_gpio_direction_output()`
أبلغ Lockdep عن تحذير "النوم في سياق ذري" (sleep-in-atomic warning) مع الاحتفاظ بقفل اللفرة المشترك لـ GPIO، ووجود `pinctrl_get_device_gpio_range()` بالإضافة إلى `tegra_gpio_direction_output()` على المكدس.
لا توضع علامة على كامل الـ chip كـ "قابل للنوم" (can_sleep) لتغطية هذا العيب: فوصف can_sleep يشير إلى ما إذا كانت عمليات get()/set() قد تسبب النوم، ووصول قيم Tegra يتم عبر MMIO. أزل استدعاءات تحديد اتجاه pinctrl الزائدة واحتفظ بمشاركة pinctrl في مسار الطلب/إلغاء الطلب الموجود حالياً.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.