CVE-2026-90402 (GCVE-0-2026-90402)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:09 – Updated: 2026-09-18 17:55
VLAI
Title
bus: mhi: host: Fix controller cleanup on EDL sysfs failure
Summary
In the Linux kernel, the following vulnerability has been resolved: bus: mhi: host: Fix controller cleanup on EDL sysfs failure mhi_register_controller() adds the controller device before creating the optional trigger_edl sysfs file. If sysfs_create_file() fails, the error path only drops the device reference and leaves the device registered. Hence, call device_del() in the error path before put_device().
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 17553ba8e19dee8770b3dcc597d49dcc3418f3b0 , < 7943dc67250fad6ceac0dd089c6ad5776e4be71d (git)
Affected: 17553ba8e19dee8770b3dcc597d49dcc3418f3b0 , < 4fb17a7c437f145353e93e6a9791f6db70e1cc63 (git)
Affected: 17553ba8e19dee8770b3dcc597d49dcc3418f3b0 , < 4743959aa8d876b5b456a62e8a62eb770db7afe9 (git)
Affected: 17553ba8e19dee8770b3dcc597d49dcc3418f3b0 , < 0d5b9e66591d4e2a4376ac82c8cda889a29ba3ee (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.10
Unaffected: 0 , < 6.10 (semver)
Unaffected: 6.12.110 , ≤ 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/bus/mhi/host/init.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "7943dc67250fad6ceac0dd089c6ad5776e4be71d",
              "status": "affected",
              "version": "17553ba8e19dee8770b3dcc597d49dcc3418f3b0",
              "versionType": "git"
            },
            {
              "lessThan": "4fb17a7c437f145353e93e6a9791f6db70e1cc63",
              "status": "affected",
              "version": "17553ba8e19dee8770b3dcc597d49dcc3418f3b0",
              "versionType": "git"
            },
            {
              "lessThan": "4743959aa8d876b5b456a62e8a62eb770db7afe9",
              "status": "affected",
              "version": "17553ba8e19dee8770b3dcc597d49dcc3418f3b0",
              "versionType": "git"
            },
            {
              "lessThan": "0d5b9e66591d4e2a4376ac82c8cda889a29ba3ee",
              "status": "affected",
              "version": "17553ba8e19dee8770b3dcc597d49dcc3418f3b0",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/bus/mhi/host/init.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.10"
            },
            {
              "lessThan": "6.10",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.110",
              "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.12.110",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbus: mhi: host: Fix controller cleanup on EDL sysfs failure\n\nmhi_register_controller() adds the controller device before creating the\noptional trigger_edl sysfs file. If sysfs_create_file() fails, the error\npath only drops the device reference and leaves the device registered.\n\nHence, call device_del() in the error path before put_device()."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The missing device_del() is in mhi_register_controller() after device_add(), reached from mhi_pci_probe() for EDL-capable PCI WWAN controllers that set edl_trigger (Qualcomm SDX/QDU). The leftover mhi_dev is then opened via local sysfs; sysfs_create_file(trigger_edl) is not fed by a remote protocol message.\nAC:H - The broken err_release_dev path runs only when sysfs_create_file(\u0026mhi_dev-\u003edev.kobj, \u0026dev_attr_trigger_edl.attr) fails after device_add() succeeded. That helper fails on kernfs errors such as -ENOMEM; a later mhi_pci_probe retries device_add(\"mhi%d\") and gets -EEXIST instead, so the attacker cannot reliably re-enter this exact failure.\nPR:L - device_add() installs mhi_dev_groups before trigger_edl is created, so serial_number and oem_pk_hash exist as DEVICE_ATTR_RO (0444) on /sys/bus/mhi/devices/mhiN/. After probe failure those files remain; an unprivileged local user can read them with no CAP_SYS_ADMIN and no user-namespace capability.\nUI:N - The attacker reads the leftover /sys/bus/mhi/devices/mhiN/serial_number or oem_pk_hash (or writes soc_reset) themselves. No second user must plug the WWAN card, mount media, or confirm a prompt.\nS:U - On the failed mhi_pci_probe(), device_unbind_cleanup() frees mhi_pdev via devres_release_all() while the still-registered mhi_dev stays a child of the PCI device. That is a host-kernel use-after-free of struct mhi_controller, not a VM, IOMMU, or sandbox escape.\nC:H - Without device_del(), mhi_dev remains in sysfs with mhi_dev-\u003emhi_cntrl pointing at mhi_pdev freed on probe failure. serial_number_show reads mhi_cntrl-\u003eserial_number from that freed object, and oem_pk_hash_show calls mhi_read_reg() on it, disclosing kernel memory.\nI:H - oem_pk_hash_show calls mhi_read_reg(), which invokes the freed mhi_cntrl-\u003eread_reg function pointer; soc_reset_store calls mhi_soc_reset() which uses mhi_cntrl-\u003ewrite_reg/reset. Replacing the freed struct mhi_controller yields an arbitrary call/write primitive for control-flow hijack.\nA:H - serial_number_show, oem_pk_hash_show, and soc_reset_store dereference the dangling mhi_cntrl and oops or panic. The leaked device also keeps the mhiN name while ida_free() reuses the index, so a later mhi_register_controller() device_add() fails until reboot."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-18T17:55:09.459Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/7943dc67250fad6ceac0dd089c6ad5776e4be71d"
        },
        {
          "url": "https://git.kernel.org/stable/c/4fb17a7c437f145353e93e6a9791f6db70e1cc63"
        },
        {
          "url": "https://git.kernel.org/stable/c/4743959aa8d876b5b456a62e8a62eb770db7afe9"
        },
        {
          "url": "https://git.kernel.org/stable/c/0d5b9e66591d4e2a4376ac82c8cda889a29ba3ee"
        }
      ],
      "title": "bus: mhi: host: Fix controller cleanup on EDL sysfs failure",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90402",
    "datePublished": "2026-09-17T16:09:32.194Z",
    "dateReserved": "2026-09-11T19:38:34.811Z",
    "dateUpdated": "2026-09-18T17:55:09.459Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-90402",
      "date": "2026-09-29",
      "epss": "0.00155",
      "percentile": "0.03937"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/bus/mhi/host/init.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "7943dc67250fad6ceac0dd089c6ad5776e4be71d",
                    "status": "affected",
                    "version": "17553ba8e19dee8770b3dcc597d49dcc3418f3b0",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4fb17a7c437f145353e93e6a9791f6db70e1cc63",
                    "status": "affected",
                    "version": "17553ba8e19dee8770b3dcc597d49dcc3418f3b0",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4743959aa8d876b5b456a62e8a62eb770db7afe9",
                    "status": "affected",
                    "version": "17553ba8e19dee8770b3dcc597d49dcc3418f3b0",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "0d5b9e66591d4e2a4376ac82c8cda889a29ba3ee",
                    "status": "affected",
                    "version": "17553ba8e19dee8770b3dcc597d49dcc3418f3b0",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/bus/mhi/host/init.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.10"
                  },
                  {
                    "lessThan": "6.10",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.110",
                    "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\nbus: mhi: host: Fix controller cleanup on EDL sysfs failure\n\nmhi_register_controller() adds the controller device before creating the\noptional trigger_edl sysfs file. If sysfs_create_file() fails, the error\npath only drops the device reference and leaves the device registered.\n\nHence, call device_del() in the error path before put_device()."
          }
        ],
        "id": "CVE-2026-90402",
        "lastModified": "2026-09-18T18:17:57.490",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "HIGH",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.0,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.0,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-17T17:17:39.987",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/0d5b9e66591d4e2a4376ac82c8cda889a29ba3ee"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4743959aa8d876b5b456a62e8a62eb770db7afe9"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4fb17a7c437f145353e93e6a9791f6db70e1cc63"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/7943dc67250fad6ceac0dd089c6ad5776e4be71d"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-22T16:28:43Z",
      "cve": "CVE-2026-90402",
      "id": "CVE-2026-90402",
      "initial_release_date": "2026-09-18T00:16:48Z",
      "product_status:known_not_affected": "347",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-90402",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-90402.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…