Description
In the Linux kernel, the following vulnerability has been resolved:

can: peak_usb: peak_usb_start(): fix double free of transfer buffer on URB submit error

In peak_usb_start(), each RX URB transfer buffer is allocated with kmalloc()
and the URB is flagged URB_FREE_BUFFER so that the final usb_free_urb() also
frees the transfer buffer.

If usb_submit_urb() fails, the error path frees the buffer explicitly with
kfree(buf) and then calls usb_free_urb(urb). Because URB_FREE_BUFFER is set,
usb_free_urb() -> urb_destroy() frees the same buffer a second time, a double
free of the transfer buffer.

BUG: KASAN: double-free in usb_free_urb.part.0+0x91/0xb0
Free of addr ffff8881069ccb80 by task trigger.sh/285

Call Trace:
kfree+0x113/0x3c0
usb_free_urb.part.0+0x91/0xb0

Drop the redundant kfree(buf); usb_free_urb() already releases the transfer
buffer. This mirrors commit 03819abbeb11 ("net: usb: lan78xx: Fix double free
issue with interrupt buffer allocation").
Published: 2026-08-15
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

In the Linux peak_usb driver, a double free occurs when a URB submission fails. The driver allocates a transfer buffer and sets URB_FREE_BUFFER so that usb_free_urb() will release it. On error the code also explicitly frees the buffer with kfree, resulting in a second free. This double free can corrupt kernel memory, leading to denial of service or, if exploited, enabling arbitrary code execution in kernel mode.

Affected Systems

All releases of the Linux kernel that include the peak_usb driver without the patch that removes the redundant kfree. The flaw applies to any system running those kernel versions.

Risk and Exploitability

The vulnerability is a classic double free, a high-severity kernel memory corruption flaw with a CVSS score of 7.8. The EPSS score is < 1% and the issue is not listed in the KEV catalog. Based on the description, it is inferred that an attacker could supply a malicious USB device that causes the URB submission to fail, potentially leading to arbitrary code execution with kernel privileges. The attack vector requires interaction with the USB subsystem, which may be local or remote depending on device exposure.

Generated by OpenCVE AI on August 18, 2026 at 04:27 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update to the latest Linux kernel release that includes the commit removing the redundant kfree in peak_usb_start.
  • If an immediate kernel update is not possible, apply the patch directly to the source code or compile a backported kernel containing the fix.
  • Constrain USB device usage – restrict the USB subsystem to trusted devices or disable unnecessary USB drivers so that the vulnerable code path cannot be invoked.

Generated by OpenCVE AI on August 18, 2026 at 04:27 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DSA Debian DSA DSA-6466-1 linux security update
History

Wed, 19 Aug 2026 16:45:00 +0000


Tue, 18 Aug 2026 03:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Tue, 18 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-1341
References
Metrics threat_severity

None

threat_severity

Moderate


Mon, 17 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Sat, 15 Aug 2026 16:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Sat, 15 Aug 2026 12:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: can: peak_usb: peak_usb_start(): fix double free of transfer buffer on URB submit error In peak_usb_start(), each RX URB transfer buffer is allocated with kmalloc() and the URB is flagged URB_FREE_BUFFER so that the final usb_free_urb() also frees the transfer buffer. If usb_submit_urb() fails, the error path frees the buffer explicitly with kfree(buf) and then calls usb_free_urb(urb). Because URB_FREE_BUFFER is set, usb_free_urb() -> urb_destroy() frees the same buffer a second time, a double free of the transfer buffer. BUG: KASAN: double-free in usb_free_urb.part.0+0x91/0xb0 Free of addr ffff8881069ccb80 by task trigger.sh/285 Call Trace: kfree+0x113/0x3c0 usb_free_urb.part.0+0x91/0xb0 Drop the redundant kfree(buf); usb_free_urb() already releases the transfer buffer. This mirrors commit 03819abbeb11 ("net: usb: lan78xx: Fix double free issue with interrupt buffer allocation").
Title can: peak_usb: peak_usb_start(): fix double free of transfer buffer on URB submit error
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-19T16:36:51.237Z

Reserved: 2026-08-15T05:44:03.900Z

Link: CVE-2026-74456

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T13:17:50.227

Modified: 2026-08-19T17:21:02.377

Link: CVE-2026-74456

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-08-15T00:00:00Z

Links: CVE-2026-74456 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-18T04:30:06Z

Weaknesses
  • CWE-1341

    Multiple Releases of Same Resource or Handle