In the Linux kernel, the following vulnerability has been resolved: mfd: cros_ec: Delay dev_set_drvdata() until probe success If ec_device_probe()… (CVE-2026-64420)
Source GCVE Database
No CVSS score published yet
- Exploitation
Not in CISA KEV, no exploitation reported
- EPSS
- 0.1% chance of exploitation in 30 days – higher than 1% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
What to do
AI-suggested
A fix has been implemented in the Linux kernel to delay the dev_set_drvdata call until after the probe function completes successfully, preventing exposure of stale pointers. Users should update to the patched kernel version once available.
Description
In the Linux kernel, the following vulnerability has been resolved: mfd: cros_ec: Delay dev_set_drvdata() until probe success If ec_device_probe() fails, cros_ec_class_release releases memory for the cros_ec_dev structure. However, because the drvdata was already set, sub-drivers like cros_ec_typec can still retrieve the stale pointer via the platform device. This leads to a use-after-free when cros_ec_typec attempts to access &typec->ec->ec->dev on a device that has already been released. Move dev_set_drvdata() to ensure that the pointer is only made available once all initialization steps have succeeded. sysfs: cannot create duplicate filename '/class/chromeos/cros_ec' Call trace: sysfs_do_create_link_sd+0x94/0xdc sysfs_create_link+0x30/0x44 device_add_class_symlinks+0x90/0x13c device_add+0xf0/0x50c ec_device_probe+0x150/0x4f0 platform_probe+0xa0/0xe0 ... BUG: KASAN: invalid-access in __memcpy+0x44/0x230 Write at addr f5ffff809e2d33ac by task kworker/u32:5/125 Pointer tag: [f5], memory tag: [fe] Tainted : [W]=WARN, [O]=OOT_MODULE Hardware name: Google Navi unprovisioned 0x7FFFFFFF/sku0 board/sku3 Workqueue: events_unbound deferred_probe_work_func Call trace: __memcpy+0x44/0x230 cros_ec_check_features+0x60/0xcc [cros_ec_proto] cros_typec_probe+0xe8/0x6e0 [cros_ec_typec] platform_probe+0xa0/0xe0
Impact
This vulnerability can lead to use-after-free conditions in the kernel, potentially causing kernel crashes, memory corruption, or undefined behavior when sub-drivers access freed memory. There is no indication of remote exploitability or privilege escalation in the provided data. No known exploits are reported in the wild.
Summary
The Linux kernel cros_ec driver had a use-after-free vulnerability caused by setting the device driver data pointer (dev_set_drvdata) before the probe function (ec_device_probe) completed successfully. If ec_device_probe failed, the cros_ec_dev structure memory was freed, but the stale pointer remained accessible via the platform device. Sub-drivers such as cros_ec_typec could then access this freed memory, causing use-after-free errors and potential kernel instability. The patch moves the dev_set_drvdata call to after successful initialization to prevent exposing stale pointers.
References
- nvd.nist.gov/vuln/detail/CVE-2026-64420 (opens in a new tab)
- git.kernel.org/stable/c/24522713034d521ea4b5f5f36342e2b2f7e73bd6 (opens in a new tab)
- git.kernel.org/stable/c/257203d83204b192d1265a916b42ca0d499bb117 (opens in a new tab)
- git.kernel.org/stable/c/729ae27dc2503a7c1f92da1859efb45da03e4fa0 (opens in a new tab)
- git.kernel.org/stable/c/8b2c1d41bc36c100b38ce5ee6def246c527eaf8a (opens in a new tab)
- git.kernel.org/stable/c/b5f41d5bf08e7b1b14fa0bd640975e6d78dc006d (opens in a new tab)
- git.kernel.org/stable/c/ed2941e5db016a0c600b25f1972620e6e223d9fa (opens in a new tab)
- git.kernel.org/stable/c/f7e81dc181d9fe8ab977158042cd193e8cc12091 (opens in a new tab)
- git.kernel.org/stable/c/fc030c5b116f668d4ca86dca63742ddbc98d1665 (opens in a new tab)