usb: dwc3: clear forceRM when issuing EndTransfer
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.6.160, 6.12.112, 6.18.51, 7.2.5
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: usb: dwc3: clear forceRM when issuing EndTransfer The forceRM bit of the DEPCMD register controls the behavior of the EndTransfer command used to stop an active transfer. Older DWC3 programming guide revisions recommended setting forceRM=1 when issuing EndTransfer. Newer programming guide revisions recommend issuing EndTransfer with forceRM cleared. With forceRM=1 on DWC_usb31 v2.00a and v2.10a controllers, a transfer aborted through the ep_dequeue path was observed to remain active after EndTransfer completion. A subsequent StartTransfer issued on the same endpoint triggered writes associated with the aborted transfer. This resulted in an SMMU fault because the transfer buffer had already been unmapped during EndTransfer command-completion cleanup. Using forceRM=0 eliminates the issue. Although older DWC3 programming guide revisions recommended setting forceRM=1, no issues are known from using forceRM=0. Clear forceRM when issuing EndTransfer to provide consistent EndTransfer behavior and align with newer programming guide recommendations.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From ab99c4be945724b032cc55e05c6738fe1d84bf70 · fixed in 7a50e138fa28e5ba76b11af66ed41cc300c0f2be; From 1e43c86d84fb0503e82a143e017f35421498fc1a · fixed in 9f1e57c484f9edeaaa5a27a03ed985e98496e81d; From 1e43c86d84fb0503e82a143e017f35421498fc1a · fixed in 0afe5c31612de3d18cc6d16e616da4a48ba1e5a2; From 1e43c86d84fb0503e82a143e017f35421498fc1a · fixed in e01408ee52fe5cb2d0b43f47f359336af2b6c316; From 1e43c86d84fb0503e82a143e017f35421498fc1a · fixed in b58e6200450d350314db0ecda7d6d1bde3281e80; From 6.6.37 · fixed in 6.6.160
- Linux Linux
6.9
- KernelLinux
fixed in 6.6.160; From 6.7.0 · fixed in 6.12.112; From 6.9.0 · fixed in 6.18.51; From 6.13.0 · fixed in 7.2.5