VYPR
Unrated severityNVD Advisory· Published Dec 16, 2025· Updated Apr 15, 2026

CVE-2025-68287

CVE-2025-68287

Description

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

usb: dwc3: Fix race condition between concurrent dwc3_remove_requests() call paths

This patch addresses a race condition caused by unsynchronized execution of multiple call paths invoking dwc3_remove_requests(), leading to premature freeing of USB requests and subsequent crashes.

Three distinct execution paths interact with dwc3_remove_requests(): Path 1: Triggered via dwc3_gadget_reset_interrupt() during USB reset handling. The call stack includes: - dwc3_ep0_reset_state() - dwc3_ep0_stall_and_restart() - dwc3_ep0_out_start() - dwc3_remove_requests() - dwc3_gadget_del_and_unmap_request()

Path 2: Also initiated from dwc3_gadget_reset_interrupt(), but through dwc3_stop_active_transfers(). The call stack includes: - dwc3_stop_active_transfers() - dwc3_remove_requests() - dwc3_gadget_del_and_unmap_request()

Path 3: Occurs independently during adb root execution, which triggers USB function unbind and bind operations. The sequence includes: - gserial_disconnect() - usb_ep_disable() - dwc3_gadget_ep_disable() - dwc3_remove_requests() with -ESHUTDOWN status

Path 3 operates asynchronously and lacks synchronization with Paths 1 and 2. When Path 3 completes, it disables endpoints and frees 'out' requests. If Paths 1 or 2 are still processing these requests, accessing freed memory leads to a crash due to use-after-free conditions.

To fix this added check for request completion and skip processing if already completed and added the request status for ep0 while queue.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Affected products

186

Patches

Vulnerability mechanics

References

7

News mentions

0

No linked articles in our index yet.