{"api_version":"1","generated_at":"2026-10-27T05:12:01+00:00","cve":"CVE-2026-93225","urls":{"html":"https://cve.report/CVE-2026-93225","api":"https://cve.report/api/cve/CVE-2026-93225.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-93225","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-93225"},"summary":{"title":"phy: fsl-imx8mq-usb: fix typec switch leak on probe error path","description":"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.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-09-24 16:17:17","updated_at":"2026-10-19 10:17:13"},"problem_types":[],"metrics":[{"version":"3.1","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","score":"7.4","severity":"HIGH","vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":7.4,"baseSeverity":"HIGH","attackVector":"LOCAL","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"7.4","severity":"HIGH","vector":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"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"}}],"references":[{"url":"https://git.kernel.org/stable/c/87a1805b1c346b092c34f96f3806f207792910e1","name":"https://git.kernel.org/stable/c/87a1805b1c346b092c34f96f3806f207792910e1","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/84646f5b945a370f6999eed59a334387b0abc282","name":"https://git.kernel.org/stable/c/84646f5b945a370f6999eed59a334387b0abc282","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/f1b7b2c7ffa9711d1298f52790b377fe02efc1db","name":"https://git.kernel.org/stable/c/f1b7b2c7ffa9711d1298f52790b377fe02efc1db","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-93225","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-93225","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b58f0f86fd6156d7b084257f5c91ceaf7d760927 f1b7b2c7ffa9711d1298f52790b377fe02efc1db git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b58f0f86fd6156d7b084257f5c91ceaf7d760927 84646f5b945a370f6999eed59a334387b0abc282 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected b58f0f86fd6156d7b084257f5c91ceaf7d760927 87a1805b1c346b092c34f96f3806f207792910e1 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.15","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.15 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.50 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.4 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"93225","cve":"CVE-2026-93225","epss":"0.001440000","percentile":"0.030470000","score_date":"2026-09-27","updated_at":"2026-09-28 00:02:25"},"legacy_qids":[]},"source_records":{"cve_program":{"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&&ARM64, 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's 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->clk) and by tca_blk_orientation_set() to writel() TCA_GCFG/TCA_SYSMODE_CFG through tca->base; 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->dev.parent->driver->owner) with parent->driver 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"},"nvd":{"publishedDate":"2026-09-24 16:17:17","lastModifiedDate":"2026-10-19 10:17:13","problem_types":[],"metrics":{"cvssMetricV31":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":7.4,"baseSeverity":"HIGH","attackVector":"LOCAL","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"},"exploitabilityScore":1.4,"impactScore":5.9}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"93225","Ordinal":"1","Title":"phy: fsl-imx8mq-usb: fix typec switch leak on probe error path","CVE":"CVE-2026-93225","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"93225","Ordinal":"1","NoteData":"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.","Type":"Description","Title":"phy: fsl-imx8mq-usb: fix typec switch leak on probe error path"}]}}}