Description
In the Linux kernel, the following vulnerability has been resolved: iommu/tegra241-cmdqv: Free the error IRQ before tearing down VINTFs tegra241_cmdqv_remove() tears each VINTF down first, then calls free_irq(). Tearing a VINTF down frees vintf0 and clears cmdqv->vintfs[0]. An error in that window makes tegra241_cmdqv_isr() read the stale slot and hand it to tegra241_vintf0_handle_error(), which dereferences a NULL or freed pointer. Free the IRQ before tearing the VINTFs down. free_irq() waits for in-flight handlers to finish and blocks new ones, so no ISR can observe a VINTF as it is torn down. Note: a user-owned VINTF (viommu) could outlive this teardown, which unmaps cmdqv->base and frees cmdqv->vintfs, so a later viommu close then touches freed memory. This is neither introduced nor fixed here: a physical IOMMU is not a pluggable device, so iommufd by design holds no reference on the one behind a viommu, and this teardown is not expected while that viommu is still alive.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
918eb5c856f6ce4cf93b4b38e4b5e156905c5943 to < 076a4f5b1fc2016b973a12bc2ebb9b730e5e1e48affected918eb5c856f6ce4cf93b4b38e4b5e156905c5943 to < 735698e81f798b4c02dcb6291ffbdd1b962c8c66affected918eb5c856f6ce4cf93b4b38e4b5e156905c5943 to < 421f5ab135cd4a1353891e5bf2602cfc3c01afc7affected918eb5c856f6ce4cf93b4b38e4b5e156905c5943 to < 61f0d437988e5730b04442f6a7d30a9907339f2aaffected
Linux Linux
Default version status: affected
6.12affected0 to < 6.12unaffected6.12.110 to ≤ 6.12.*unaffected6.18.52 to ≤ 6.18.*unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected