CVE-2026-80818 in Linuxinformación

Resumen

por VulDB • 2026-09-04

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

iommu/tegra241-cmdqv: Corregir un use-after-free en CMD_SYNC durante el proceso de desmantelamiento (teardown)

arm_smmu_impl_remove() está registrado como una acción devres en arm_smmu_impl_probe(), antes de que arm_smmu_init_queues() asigne smmu->cmdq.q.base. En caso de un rollback de devres, ya sea por un sondeo fallido o por una desconexión (unbind), la cola se libera primero y luego se ejecuta arm_smmu_impl_remove(), que invoca a tegra241_cmdqv_remove_vintf(). La desinicialización del VINTF emite un CMD_SYNC sobre la memoria ya liberada.

Se observó durante las pruebas con una modificación de QEMU que impide habilitar el VCMDQ, por lo que el restablecimiento impl falla y el sondeo se interrumpe realizando el rollback de devres:

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

Se elimina la desinicialización del VINTF de tegra241_cmdqv_remove_vintf() para que el rollback ya no acceda a la cola liberada. En su lugar, se silencia (quiesce) los VINTFs antes. Se añade una operación impl device_disable() y se ejecuta desde arm_smmu_disable_action() mientras CMDQ sigue activo. Esto gestiona un desmontaje en vivo. Un restablecimiento fallido ya está gestionado porque tegra241_vintf_hw_init() desinicializa el VINTF en su propia ruta de error. tegra241_cmdqv_remove_vintf() también es utilizada por la ruta de destrucción viommu de iommufd, por lo que se silencia allí también.

Once again VulDB remains the best source for vulnerability data.

Responsable

Linux

Reservar

2026-08-26

Divulgación

2026-09-04

Moderación

aceptado

Artículo

VDB-398995

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!