CVE-2026-93225 (GCVE-0-2026-93225)

Vulnerability from cvelistv5 – Published: 2026-09-24 15:21 – Updated: 2026-10-19 09:07
VLAI
Title
phy: fsl-imx8mq-usb: fix typec switch leak on probe error path
Summary
In the Linux kernel, the following vulnerability has been resolved: phy: fsl-imx8mq-usb: fix typec switch leak on probe error path If probe fails after imx95_usb_phy_get_tca() succeeds, the typec switch leaks because the only cleanup path was in .remove(), which never runs on probe failure. Use devm_add_action_or_reset() so the switch is cleaned up on both probe failure and driver removal. The imx95_usb_phy_put_tca() is no longer needed, it will be removed in .remove() too.
Assigner
Linux CNA under the mitre root
CNA scorecard D 53/100 over 6638 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: b58f0f86fd6156d7b084257f5c91ceaf7d760927 , < f1b7b2c7ffa9711d1298f52790b377fe02efc1db (git)
Affected: b58f0f86fd6156d7b084257f5c91ceaf7d760927 , < 84646f5b945a370f6999eed59a334387b0abc282 (git)
Affected: b58f0f86fd6156d7b084257f5c91ceaf7d760927 , < 87a1805b1c346b092c34f96f3806f207792910e1 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.15
Unaffected: 0 , < 6.15 (semver)
Unaffected: 6.18.50 , ≤ 6.18.* (semver)
Unaffected: 7.2.4 , ≤ 7.2.* (semver)
Unaffected: 7.3 , ≤ * (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/phy/freescale/phy-fsl-imx8mq-usb.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "f1b7b2c7ffa9711d1298f52790b377fe02efc1db",
              "status": "affected",
              "version": "b58f0f86fd6156d7b084257f5c91ceaf7d760927",
              "versionType": "git"
            },
            {
              "lessThan": "84646f5b945a370f6999eed59a334387b0abc282",
              "status": "affected",
              "version": "b58f0f86fd6156d7b084257f5c91ceaf7d760927",
              "versionType": "git"
            },
            {
              "lessThan": "87a1805b1c346b092c34f96f3806f207792910e1",
              "status": "affected",
              "version": "b58f0f86fd6156d7b084257f5c91ceaf7d760927",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/phy/freescale/phy-fsl-imx8mq-usb.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.15"
            },
            {
              "lessThan": "6.15",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.50",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.50",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.4",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nphy: fsl-imx8mq-usb: fix typec switch leak on probe error path\n\nIf probe fails after imx95_usb_phy_get_tca() succeeds, the typec\nswitch leaks because the only cleanup path was in .remove(), which\nnever runs on probe failure.\n\nUse devm_add_action_or_reset() so the switch is cleaned up on both\nprobe failure and driver removal. The imx95_usb_phy_put_tca() is no\nlonger needed, it will be removed in .remove() too."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.4,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The leak is created in imx8mq_usb_phy_probe() after tca_blk_get_typec_switch() calls typec_switch_register(); the entry point is platform_probe of DT node usb3_phy@4c1f0040 (compatible fsl,imx95-usb-phy). No USB or network protocol message carries the trigger; this is a probe error-path leak.\nAC:H - After imx95_usb_phy_get_tca() succeeds, the only later failure is ENOMEM from kzalloc/devres_alloc in __devm_of_phy_provider_register(); imx8m_get_phy_tuning_data() cannot fail. That GFP_KERNEL failure is not attacker-controlled, and suppress_bind_attrs=true blocks sysfs rebind of imx8mq-usb-phy.\nPR:N - imx8mq_usb_phy_probe() has no capable() check. PHY_FSL_IMX8MQ_USB defaults y on ARCH_MXC\u0026\u0026ARM64, so of_platform populate binds usb3_phy@4c1f0040 during kernel init on i.MX95 boards that set status=okay. Sysfs bind is not required and is disabled by suppress_bind_attrs.\nUI:N - of_platform probe of usb3_phy and a later tcpci/tcpm_register_port() of ptn5110@50 (imx95-19x19-evk typec_con) run unattended at boot. typec_register_port() calls typec_switch_get() without a mount, open, or USB-C cable plug.\nS:U - The leaked typec_switch_dev, the devres free of imx8mq_usb_phy, and tca_blk_typec_switch_set() run in the host kernel PHY/Type-C stack. This is not a KVM/Xen guest-to-host escape or an IOMMU/DMA bypass.\nC:H - typec_switch_register() stores drvdata=imx_phy; probe failure then frees that imx8mq_usb_phy via devres while the class device remains. tca_blk_typec_switch_set() reads the freed object via typec_switch_get_drvdata() when TCPM\u0027s tcpm_mux_set() calls typec_set_orientation().\nI:H - The same dangling drvdata is used by tca_blk_typec_switch_set() to clk_prepare_enable(imx_phy-\u003eclk) and by tca_blk_orientation_set() to writel() TCA_GCFG/TCA_SYSMODE_CFG through tca-\u003ebase; reclaiming the freed imx8mq_usb_phy/tca_blk slab is a write and control-flow primitive.\nA:H - Once probe fails, fwnode_typec_switch_get() does try_module_get(sw_dev-\u003edev.parent-\u003edriver-\u003eowner) with parent-\u003edriver NULL, or tca_blk_typec_switch_set() dereferences the freed imx_phy; either path oopses the i.MX95 host."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-19T09:07:36.752Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/f1b7b2c7ffa9711d1298f52790b377fe02efc1db"
        },
        {
          "url": "https://git.kernel.org/stable/c/84646f5b945a370f6999eed59a334387b0abc282"
        },
        {
          "url": "https://git.kernel.org/stable/c/87a1805b1c346b092c34f96f3806f207792910e1"
        }
      ],
      "title": "phy: fsl-imx8mq-usb: fix typec switch leak on probe error path",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-93225",
    "datePublished": "2026-09-24T15:21:12.635Z",
    "dateReserved": "2026-09-17T16:02:15.094Z",
    "dateUpdated": "2026-10-19T09:07:36.752Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-93225",
      "date": "2026-11-15",
      "epss": "0.00142",
      "percentile": "0.03577"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/phy/freescale/phy-fsl-imx8mq-usb.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "f1b7b2c7ffa9711d1298f52790b377fe02efc1db",
                    "status": "affected",
                    "version": "b58f0f86fd6156d7b084257f5c91ceaf7d760927",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "84646f5b945a370f6999eed59a334387b0abc282",
                    "status": "affected",
                    "version": "b58f0f86fd6156d7b084257f5c91ceaf7d760927",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "87a1805b1c346b092c34f96f3806f207792910e1",
                    "status": "affected",
                    "version": "b58f0f86fd6156d7b084257f5c91ceaf7d760927",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/phy/freescale/phy-fsl-imx8mq-usb.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.15"
                  },
                  {
                    "lessThan": "6.15",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.50",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.4",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3",
                    "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\nphy: fsl-imx8mq-usb: fix typec switch leak on probe error path\n\nIf probe fails after imx95_usb_phy_get_tca() succeeds, the typec\nswitch leaks because the only cleanup path was in .remove(), which\nnever runs on probe failure.\n\nUse devm_add_action_or_reset() so the switch is cleaned up on both\nprobe failure and driver removal. The imx95_usb_phy_put_tca() is no\nlonger needed, it will be removed in .remove() too."
          }
        ],
        "id": "CVE-2026-93225",
        "lastModified": "2026-10-19T10:17:13.503",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "HIGH",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.4,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.4,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-24T16:17:17.857",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/84646f5b945a370f6999eed59a334387b0abc282"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/87a1805b1c346b092c34f96f3806f207792910e1"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/f1b7b2c7ffa9711d1298f52790b377fe02efc1db"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-11-06T19:59:23+00:00",
      "cve": "CVE-2026-93225",
      "id": "CVE-2026-93225",
      "initial_release_date": "2026-09-24T00:00:00+00:00",
      "product_status:known_affected": "110",
      "product_status:known_not_affected": "93",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: phy: fsl-imx8mq-usb: fix typec switch leak on probe error path",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-93225.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

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.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
How durations are calculated

Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.

Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.

Events included in the timeline

Loading timeline…


    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.