CVE-2026-80818 in Linuxinfo

Zusammenfassung

von VulDB • 04.09.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

iommu/tegra241-cmdqv: Use-After-Free bei CMD_SYNC während des Teardowns beheben

arm_smmu_impl_remove() wird als devres-Aktion in arm_smmu_impl_probe() registriert, bevor arm_smmu_init_queues() smmu->cmdq.q.base alloziert. Bei einer devres-Rückabwicklung (unwind), sei es bei einem fehlgeschlagenen Probe oder beim Unbind, wird die Warteschlange zuerst freigegeben und anschließend läuft arm_smmu_impl_remove(), was tegra241_cmdqv_remove_vintf() ausführt. Dessen VINTF-Deinitialisierung gibt einen CMD_SYNC auf den bereits freigegebenen Speicher ab.

Beobachtet während der Tests mit einem QEMU-Hack, der dazu führt, dass sich das VCMDQ nicht aktivieren lässt, sodass die impl-Rücksetzung fehlschlägt und der Probe-Vorgang in die devres-Rückabwicklung abbricht:

platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: Aktivierung fehlgeschlagen, STATUS=0x00000000 platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: GERRORN=0x0, GERROR=0x4, CONS=0x0 platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: Nicht gelöschter Fehler erkannt, Rücksetzung wird durchgeführt arm-smmu-v3 arm-smmu-v3.0.auto: Fehlgeschlagene impl-Rücksetzung arm-smmu-v3 arm-smmu-v3.0.auto: Probe mit Treiber arm-smmu-v3 fehlgeschlagen mit Fehler -110 Kernel-Paging-Anfrage bei virtueller Adresse ffff8000891e0098 konnte nicht verarbeitet werden ... Interner Fehler: 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

Die VINTF-Deinitialisierung aus tegra241_cmdqv_remove_vintf() entfernen, damit die Rückabwicklung den freigegebenen Warteschlangenbereich nicht mehr berührt. Stattdessen werden die VINTFs früher in einen ruhigen Zustand versetzt (quiesce). Eine device_disable()-Implementierungsfunktion wird hinzugefügt und von arm_smmu_disable_action() ausgeführt, während das CMDQ noch aktiv ist. Dies behandelt ein Live-Unbind. Ein fehlgeschlagener Reset ist bereits abgedeckt, da tegra241_vintf_hw_init() die VINTF im eigenen Fehlerpfad deinitialisiert. tegra241_cmdqv_remove_vintf() wird auch vom iommufd viommu-Zerstörungspfad verwendet, daher erfolgt dort ebenfalls eine Ruhigstellung (quiesce).

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Zuständig

Linux

Reservieren

26.08.2026

Veröffentlichung

04.09.2026

Moderieren

akzeptiert

Eintrag

VDB-398995

CPE

bereit

EPSS

0.00168

KEV

nein

Aktivitäten

very low

Quellen

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!