CVE-2026-90429: iommu/tegra241-cmdqv: Synchronize the error ISR against VINTF (de)init

Published Sep 17, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

iommu/tegra241-cmdqv: Synchronize the error ISR against VINTF (de)init

A user VINTF is torn down by tegra241cmdqvdeinitvintf(), which runs from the destroy callback and from the init-failure unwind in the alloc handler. It clears the cmdqv->vintfs[] slot and lets the iommufd core free it, but nothing serializes that against the error interrupt: tegra241cmdqvisr() reads cmdqv->vintfs[idx] and dereferences the vintf. A concurrent error can make the ISR read a slot mid-clear (a NULL deref) or use a vintf which is about to be freed (a use-after-free).

deinitvintf() also returns idx to the IDA before clearing the slot, so a concurrent create that reuses idx can publish its new vintf into the slot, only for this teardown to erase it again with the stale NULL store.

On the other end, tegra241cmdqvinitvintf() publishes a new vintf with a plain store to the cmdqv->vintfs[] slot, and the ISR dereferences fields of a published vintf such as vintf->base. A plain store gives no ordering on a weakly-ordered CPU, and a stale VINTFERRMAP bit on a reused idx can make the ISR pick a vintf the moment it is published, before its fields are set or tegra241vintfhwinit() runs.

The cmdqv->vintfs[0] slot stays NULL until tegra241cmdqvinitstructures() first creates VINTF0, so the slot 0 read needs the same NULL check.

Publish every slot with an smpstorerelease(), and read each slot in the ISR with an smploadacquire() under a NULL check, so the ISR always sees a fully built vintf or NULL. Also make deinitvintf() clear the slot, and synchronizeirq() prior to returning idx to the IDA, so no vintf is freed under a running handler and no reused idx is clobbered.

Affected Software

1 affected component
Linux Kernel

Event History

Sep 17, 2026
CVE Published
via MITRE·04:09 PM
Data Sourced
via MITRE·04:09 PM
Description

Frequently Asked Questions

1

Which systems are exposed to this issue?

Systems using the Linux kernel's tegra241-cmdqv IOMMU driver and user VINTF functionality are exposed. The race involves the driver’s error interrupt handler and VINTF creation or teardown.

2

What conditions are needed to trigger the vulnerability?

An error interrupt must occur concurrently with VINTF initialization or deinitialization. The affected paths can arise during VINTF destruction, allocation failure cleanup, or rapid reuse of a VINTF index.

3

What failures can this race cause?

The error ISR can dereference a NULL VINTF slot or access a VINTF that is being freed, resulting in a use-after-free. It can also erase a newly published VINTF after an index is reused, leaving the slot in an inconsistent state.

4

How can I tell whether my kernel includes the fix?

Check whether your kernel contains one of the referenced stable commits: bcb82407633c3008362ad927699d985ee4981557, f3ef4abc271a1d3d7b6715879e149c286dc8aae7, or a491be376abd1c80a314cdd658632c85cd660b73.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203