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

الملخص

بحسب VulDB • 04/09/2026

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

iommu/tegra241-cmdqv: تصحيح استخدام بعد التحرير (use-after-free) لـ CMD_SYNC أثناء عملية الإزالة (teardown).

تم تسجيل `arm_smmu_impl_remove()` كإجراء مرتبط بإدارة الأجهزة (devres action) في `arm_smmu_impl_probe()، قبل أن يقوم `arm_smmu_init_queues()` بتخصيص `smmu->cmdq.q.base`. وفي حالة التراجع عن إدارة الأجهزة (devres unwind)، سواء كان ذلك بسبب فشل عملية الفحص (probe) أو فصل الجهاز (unbind)، يتم تحرير قائمة الانتظار أولاً ثم يعمل `arm_smmu_impl_remove()` على استدعاء `tegra241_cmdqv_remove_vintf()، والتي تقوم بإيقاف تشغيل واجهة VINTF عن طريق إصدار أمر CMD_SYNC على الذاكرة التي تم تحريرها.

تم رصد هذه الحالة أثناء الاختبار باستخدام تعديل (hack) في QEMU يجعل VCMDQ يفشل في التفعيل، مما يؤدي إلى فشل إعادة تعيين التنفيذ (impl reset) وانتهاء عملية الفحص بالتراجع عبر إدارة الأجهزة:

platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: failed to enable, STATUS=0x00000000 platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: GERRORN=0x0, GERROR=0x4, CONS=0x0 platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: uncleared error detected, resetting arm-smmu-v3 arm-smmu-v3.0.auto: failed to reset impl arm-smmu-v3 arm-smmu-v3.0.auto: probe with driver arm-smmu-v3 failed with error -110 Unable to handle kernel paging request at virtual address ffff8000891e0098 ... Internal error: Oops: 0000000096000047 [#1] SMP
... Call trace: arm_smmu_cmdq_issue_cmdlist+0x320/0x6fc (P) tegra241_vcmdq_hw_deinit+0x98/0x168 tegra241_vintf_hw_deinit+0x5c/0x1b0 tegra241_cmdqv_remove_vintf+0x34/0xec tegra241_cmdqv_remove+0x40/0x9c arm_smmu_impl_remove+0x20/0x30 devm_action_release+0x14/0x20 devres_release_all+0xa8/0x110 device_unbind_cleanup+0x18/0x84 really_probe+0x1f0/0x29c

تم إزالة إيقاف تشغيل واجهة VINTF من `tegra241_cmdqv_remove_vintf()` بحيث لم يعد التراجع يلامس قائمة الانتظار المحررة. بدلاً من ذلك، تم تهدئة (quiesce) واجهات VINTF في وقت أبكر. تمت إضافة عملية تنفيذية لـ `device_disable()` وتشغيلها من خلال `arm_smmu_disable_action()` بينما لا تزال CMDQ تعمل. وهذا يتعامل مع فصل الجهاز أثناء التشغيل (live unbind). يتم التعامل بالفعل مع فشل إعادة التعيين لأن `tegra241_vintf_hw_init()` تقوم بإيقاف تشغيل واجهة VINTF في مسار الخطأ الخاص بها. كما أن `tegra241_cmdqv_remove_vintf()` تُستخدم أيضًا من قبل مسار تدمير viommu لـ iommufd، لذا تم تهدئة الواجهات هناك أيضاً.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

مسؤول

Linux

حجز

26/08/2026

إفشاء

04/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-398995

EPSS

0.00168

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you need the next level of professionalism?

Upgrade your account now!