Overview
About vulnerability
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-ESHUTDOWNstatus
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.
Details
- Affected product:
- AlmaLinux 9.2 ESU , TuxCare 9.6 ESU , Ubuntu 20.04 ELS
- Affected packages:
- kernel @ 5.14.0 (+2 more)
Fixes
KernelCare state
Live-patch status from KernelCare for each operating system.
| Operating system | Status | Covered kernels |
|---|---|---|
| AlmaLinux 10 | Released |
19 kernels
|
| AlmaLinux 9 | Released |
85 kernels
|
| Amazon Linux 2023 | Planned | — |
| Debian 12 | Released |
32 kernels
|
| Debian 13 | Will Not Fix | — |
| Oracle Linux 10 | Released |
20 kernels
|
| Oracle Linux 8 UEK 7 | Released |
83 kernels
|
| Oracle Linux 9 | Released |
93 kernels
|
| Oracle Linux 9 UEK 7 | Released |
83 kernels
|
| Proxmox VE 7 5.15 | Released |
47 kernels
|
| RHEL 10 | Released |
22 kernels
|
| RHEL 9 | Released |
87 kernels
|
| Rocky Linux 10 | Released |
14 kernels
|
| Rocky Linux 9 | Released |
73 kernels
|
| Ubuntu 20.04 HWE AWS | Released |
57 kernels
|
| Ubuntu 20.04 HWE Azure | Released |
40 kernels
|
| Ubuntu 22.04 | Released |
90 kernels
|
| Ubuntu 22.04 AWS | Released |
81 kernels
|
| Ubuntu 22.04 Azure | Released |
73 kernels
|
| Ubuntu 24.04 | Released |
39 kernels
|
| Ubuntu 24.04 AWS | Planned | — |