CVE-2026-64585
can: esd_usb: kill anchored URBs before freeing netdevs
Description
In the Linux kernel, the following vulnerability has been resolved: can: esd_usb: kill anchored URBs before freeing netdevs esd_usb_disconnect() frees each CAN netdev with free_candev() inside its per-netdev loop and only calls unlink_all_urbs(dev) afterwards. The per-netdev private data (struct esd_usb_net_priv) is embedded in the net_device allocation returned by alloc_candev(), so once free_candev() has run, dev->nets[i] points to freed memory. unlink_all_urbs() then dereferences the freed dev->nets[i] to kill the per-netdev TX anchor (usb_kill_anchored_urbs(&priv->tx_submitted)), clear active_tx_jobs, and reset priv->tx_contexts[]. Reorder the teardown so the anchored URBs are killed before the netdevs are freed, matching other CAN/USB drivers in the same directory such as ems_usb, usb_8dev and mcba_usb, which unregister, then unlink, then free: unregister the netdevs first (which stops their TX queues), call unlink_all_urbs(dev) once, then free the netdevs. This issue was found by an in-house static analysis tool.
INFO
Published Date :
Aug. 6, 2026, 8:16 a.m.
Last Modified :
Aug. 6, 2026, 8:16 a.m.
Remotely Exploit :
No
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Affected Products
The following products are affected by CVE-2026-64585
vulnerability.
Even if cvefeed.io is aware of the exact versions of the
products
that
are
affected, the information is not represented in the table below.
No affected product recoded yet
Solution
- Unregister netdevs first.
- Call unlink_all_urbs(dev) once.
- Free netdevs after unlinking URBs.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-64585.
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-64585 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-64585
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-64585 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-64585 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Aug. 06, 2026
Action Type Old Value New Value Added Affected [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '96d8e90382dc336b5de401164597edfdc2e8d9f1', 'lessThan': 'aa1d005927db38af783c1a4a8a00a39e0229ab2d', 'versionType': 'git'}, {'status': 'affected', 'version': '96d8e90382dc336b5de401164597edfdc2e8d9f1', 'lessThan': 'a02e1d8f191324583599544d54e59e6a2b74bb0e', 'versionType': 'git'}, {'status': 'affected', 'version': '96d8e90382dc336b5de401164597edfdc2e8d9f1', 'lessThan': 'a3314f10369df70925140f59bbe069718f65a0b9', 'versionType': 'git'}, {'status': 'affected', 'version': '96d8e90382dc336b5de401164597edfdc2e8d9f1', 'lessThan': '765ba1c91823a296447528791b89a6504947fd5c', 'versionType': 'git'}, {'status': 'affected', 'version': '96d8e90382dc336b5de401164597edfdc2e8d9f1', 'lessThan': '5832c55b3c824ba2fe9c36ac3c411baddcce053e', 'versionType': 'git'}, {'status': 'affected', 'version': '96d8e90382dc336b5de401164597edfdc2e8d9f1', 'lessThan': 'c43122fef328a70045fe7621c06de6b2b8e19264', 'versionType': 'git'}], 'programFiles': ['drivers/net/can/usb/esd_usb.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '2.6.36'}, {'status': 'unaffected', 'version': '0', 'lessThan': '2.6.36', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '6.1.178', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.145', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.97', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.40', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.1.5', 'versionType': 'semver', 'lessThanOrEqual': '7.1.*'}, {'status': 'unaffected', 'version': '7.2-rc4', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['drivers/net/can/usb/esd_usb.c'], 'defaultStatus': 'affected'}] Added Description In the Linux kernel, the following vulnerability has been resolved: can: esd_usb: kill anchored URBs before freeing netdevs esd_usb_disconnect() frees each CAN netdev with free_candev() inside its per-netdev loop and only calls unlink_all_urbs(dev) afterwards. The per-netdev private data (struct esd_usb_net_priv) is embedded in the net_device allocation returned by alloc_candev(), so once free_candev() has run, dev->nets[i] points to freed memory. unlink_all_urbs() then dereferences the freed dev->nets[i] to kill the per-netdev TX anchor (usb_kill_anchored_urbs(&priv->tx_submitted)), clear active_tx_jobs, and reset priv->tx_contexts[]. Reorder the teardown so the anchored URBs are killed before the netdevs are freed, matching other CAN/USB drivers in the same directory such as ems_usb, usb_8dev and mcba_usb, which unregister, then unlink, then free: unregister the netdevs first (which stops their TX queues), call unlink_all_urbs(dev) once, then free the netdevs. This issue was found by an in-house static analysis tool. Added Reference https://git.kernel.org/stable/c/5832c55b3c824ba2fe9c36ac3c411baddcce053e Added Reference https://git.kernel.org/stable/c/765ba1c91823a296447528791b89a6504947fd5c Added Reference https://git.kernel.org/stable/c/a02e1d8f191324583599544d54e59e6a2b74bb0e Added Reference https://git.kernel.org/stable/c/a3314f10369df70925140f59bbe069718f65a0b9 Added Reference https://git.kernel.org/stable/c/aa1d005927db38af783c1a4a8a00a39e0229ab2d Added Reference https://git.kernel.org/stable/c/c43122fef328a70045fe7621c06de6b2b8e19264