CVE-2026-90424 (GCVE-0-2026-90424)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:09 – Updated: 2026-09-17 16:09
VLAI
Title
iommu/tegra241-cmdqv: Fix VINTF0 leak on the init-failure path
Summary
In the Linux kernel, the following vulnerability has been resolved: iommu/tegra241-cmdqv: Fix VINTF0 leak on the init-failure path tegra241_cmdqv_init_structures() allocates VINTF0 with kzalloc_obj(), inits it, and preallocates its logical VCMDQs. Two of its error paths leak. When tegra241_cmdqv_init_vintf() fails it returns before VINTF0 reaches the cmdqv->vintfs[] array, so the devres unwind on probe failure cannot reach it; free it directly there. A later VCMDQ preallocation failure instead leaves VINTF0 published, and so this time the unwind does reach tegra241_cmdqv_remove_vintf(), which then frees it from vintf->hyp_own. But tegra241_vintf_hw_init() sets that flag only afterward, from a HW read-back, so the still-uninited VINTF0 reads as guest-owned and leaks, with mutex_destroy() and ida_destroy() run on fields it never set up. Decide ownership from vintf->idx instead, the index assigned when its id is allocated: idx 0 is the kernel-owned VINTF0, while idx >= 1 marks a guest VINTF. So the in-kernel free decision in tegra241_cmdqv_remove_vintf() and tegra241_vintf_free_lvcmdq() now keys on idx too, and hyp_own stays a pure HW-readback state.
Severity
No CVSS data available.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 918eb5c856f6ce4cf93b4b38e4b5e156905c5943 , < 1d2271d7df5230e4ce36bdafd17524bd004f3b3f (git)
Affected: 918eb5c856f6ce4cf93b4b38e4b5e156905c5943 , < 417190bde0fda4ee857999a722ca90163fbec587 (git)
Affected: 918eb5c856f6ce4cf93b4b38e4b5e156905c5943 , < f40f3144477314b489e4bc209c06cb51679fe82b (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.12
Unaffected: 0 , < 6.12 (semver)
Unaffected: 6.18.52 , ≤ 6.18.* (semver)
Unaffected: 7.2.6 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "1d2271d7df5230e4ce36bdafd17524bd004f3b3f",
              "status": "affected",
              "version": "918eb5c856f6ce4cf93b4b38e4b5e156905c5943",
              "versionType": "git"
            },
            {
              "lessThan": "417190bde0fda4ee857999a722ca90163fbec587",
              "status": "affected",
              "version": "918eb5c856f6ce4cf93b4b38e4b5e156905c5943",
              "versionType": "git"
            },
            {
              "lessThan": "f40f3144477314b489e4bc209c06cb51679fe82b",
              "status": "affected",
              "version": "918eb5c856f6ce4cf93b4b38e4b5e156905c5943",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.12"
            },
            {
              "lessThan": "6.12",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.52",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu/tegra241-cmdqv: Fix VINTF0 leak on the init-failure path\n\ntegra241_cmdqv_init_structures() allocates VINTF0 with kzalloc_obj(), inits\nit, and preallocates its logical VCMDQs. Two of its error paths leak.\n\nWhen tegra241_cmdqv_init_vintf() fails it returns before VINTF0 reaches the\ncmdqv-\u003evintfs[] array, so the devres unwind on probe failure cannot reach\nit; free it directly there.\n\nA later VCMDQ preallocation failure instead leaves VINTF0 published, and so\nthis time the unwind does reach tegra241_cmdqv_remove_vintf(), which then\nfrees it from vintf-\u003ehyp_own. But tegra241_vintf_hw_init() sets that flag\nonly afterward, from a HW read-back, so the still-uninited VINTF0 reads as\nguest-owned and leaks, with mutex_destroy() and ida_destroy() run on fields\nit never set up.\n\nDecide ownership from vintf-\u003eidx instead, the index assigned when its id is\nallocated: idx 0 is the kernel-owned VINTF0, while idx \u003e= 1 marks a guest\nVINTF. So the in-kernel free decision in tegra241_cmdqv_remove_vintf() and\ntegra241_vintf_free_lvcmdq() now keys on idx too, and hyp_own stays a pure\nHW-readback state."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-17T16:09:47.165Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/1d2271d7df5230e4ce36bdafd17524bd004f3b3f"
        },
        {
          "url": "https://git.kernel.org/stable/c/417190bde0fda4ee857999a722ca90163fbec587"
        },
        {
          "url": "https://git.kernel.org/stable/c/f40f3144477314b489e4bc209c06cb51679fe82b"
        }
      ],
      "title": "iommu/tegra241-cmdqv: Fix VINTF0 leak on the init-failure path",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90424",
    "datePublished": "2026-09-17T16:09:47.165Z",
    "dateReserved": "2026-09-11T19:38:34.814Z",
    "dateUpdated": "2026-09-17T16:09:47.165Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-90424",
      "date": "2026-09-29",
      "epss": "0.00206",
      "percentile": "0.09564"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "1d2271d7df5230e4ce36bdafd17524bd004f3b3f",
                    "status": "affected",
                    "version": "918eb5c856f6ce4cf93b4b38e4b5e156905c5943",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "417190bde0fda4ee857999a722ca90163fbec587",
                    "status": "affected",
                    "version": "918eb5c856f6ce4cf93b4b38e4b5e156905c5943",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "f40f3144477314b489e4bc209c06cb51679fe82b",
                    "status": "affected",
                    "version": "918eb5c856f6ce4cf93b4b38e4b5e156905c5943",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.12"
                  },
                  {
                    "lessThan": "6.12",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.52",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.6",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu/tegra241-cmdqv: Fix VINTF0 leak on the init-failure path\n\ntegra241_cmdqv_init_structures() allocates VINTF0 with kzalloc_obj(), inits\nit, and preallocates its logical VCMDQs. Two of its error paths leak.\n\nWhen tegra241_cmdqv_init_vintf() fails it returns before VINTF0 reaches the\ncmdqv-\u003evintfs[] array, so the devres unwind on probe failure cannot reach\nit; free it directly there.\n\nA later VCMDQ preallocation failure instead leaves VINTF0 published, and so\nthis time the unwind does reach tegra241_cmdqv_remove_vintf(), which then\nfrees it from vintf-\u003ehyp_own. But tegra241_vintf_hw_init() sets that flag\nonly afterward, from a HW read-back, so the still-uninited VINTF0 reads as\nguest-owned and leaks, with mutex_destroy() and ida_destroy() run on fields\nit never set up.\n\nDecide ownership from vintf-\u003eidx instead, the index assigned when its id is\nallocated: idx 0 is the kernel-owned VINTF0, while idx \u003e= 1 marks a guest\nVINTF. So the in-kernel free decision in tegra241_cmdqv_remove_vintf() and\ntegra241_vintf_free_lvcmdq() now keys on idx too, and hyp_own stays a pure\nHW-readback state."
          }
        ],
        "id": "CVE-2026-90424",
        "lastModified": "2026-09-17T17:17:47.060",
        "metrics": {},
        "published": "2026-09-17T17:17:47.060",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/1d2271d7df5230e4ce36bdafd17524bd004f3b3f"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/417190bde0fda4ee857999a722ca90163fbec587"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/f40f3144477314b489e4bc209c06cb51679fe82b"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "suse_vex": {
      "aggregate_severity": "low",
      "current_release_date": "2026-09-22T16:28:09Z",
      "cve": "CVE-2026-90424",
      "id": "CVE-2026-90424",
      "initial_release_date": "2026-09-18T00:16:24Z",
      "product_status:known_affected": "29",
      "product_status:known_not_affected": "318",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-90424",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-90424.json",
      "version": "4"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…