CVE-2024-36977

In the Linux kernel, the following vulnerability has been resolved: usb: dwc3: Wait unconditionally after issuing EndXfer command Currently all controller IP/revisions except DWC3_usb3 >= 310a wait 1ms unconditionally for ENDXFER completion when IOC is not set. This is because DWC_usb3 controller revisions >= 3.10a supports GUCTL2[14: Rst_actbitlater] bit which allows polling CMDACT bit to know whether ENDXFER command is completed. Consider a case where an IN request was queued, and parallelly soft_disconnect was called (due to ffs_epfile_release). This eventually calls stop_active_transfer with IOC cleared, hence send_gadget_ep_cmd() skips waiting for CMDACT cleared during EndXfer. For DWC3 controllers with revisions >= 310a, we don't forcefully wait for 1ms either, and we proceed by unmapping the requests. If ENDXFER didn't complete by this time, it leads to SMMU faults since the controller would still be accessing those requests. Fix this by ensuring ENDXFER completion by adding 1ms delay in __dwc3_stop_active_transfer() unconditionally.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

History

01 Oct 2025, 15:53

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/1ba145f05b5c8f0b1a947a0633b5edff5dd1f1c5 - () https://git.kernel.org/stable/c/1ba145f05b5c8f0b1a947a0633b5edff5dd1f1c5 - Patch
References () https://git.kernel.org/stable/c/1d26ba0944d398f88aaf997bda3544646cf21945 - () https://git.kernel.org/stable/c/1d26ba0944d398f88aaf997bda3544646cf21945 - Patch
References () https://git.kernel.org/stable/c/341eb08dbca9eae05308c442fbfab1813a44c97a - () https://git.kernel.org/stable/c/341eb08dbca9eae05308c442fbfab1813a44c97a - Patch
References () https://git.kernel.org/stable/c/4a387e032909c6dc2b479452c5bbe9a252057925 - () https://git.kernel.org/stable/c/4a387e032909c6dc2b479452c5bbe9a252057925 - Patch
References () https://git.kernel.org/stable/c/ec96bcf5f96a7a5c556b0e881ac3e5c3924d542c - () https://git.kernel.org/stable/c/ec96bcf5f96a7a5c556b0e881ac3e5c3924d542c - Patch
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
CWE NVD-CWE-noinfo
First Time Linux linux Kernel
Linux
CVSS v2 : unknown
v3 : 4.7
v2 : unknown
v3 : 5.5

21 Nov 2024, 09:22

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/1ba145f05b5c8f0b1a947a0633b5edff5dd1f1c5 - () https://git.kernel.org/stable/c/1ba145f05b5c8f0b1a947a0633b5edff5dd1f1c5 -
References () https://git.kernel.org/stable/c/1d26ba0944d398f88aaf997bda3544646cf21945 - () https://git.kernel.org/stable/c/1d26ba0944d398f88aaf997bda3544646cf21945 -
References () https://git.kernel.org/stable/c/341eb08dbca9eae05308c442fbfab1813a44c97a - () https://git.kernel.org/stable/c/341eb08dbca9eae05308c442fbfab1813a44c97a -
References () https://git.kernel.org/stable/c/4a387e032909c6dc2b479452c5bbe9a252057925 - () https://git.kernel.org/stable/c/4a387e032909c6dc2b479452c5bbe9a252057925 -
References () https://git.kernel.org/stable/c/ec96bcf5f96a7a5c556b0e881ac3e5c3924d542c - () https://git.kernel.org/stable/c/ec96bcf5f96a7a5c556b0e881ac3e5c3924d542c -

01 Nov 2024, 15:35

Type Values Removed Values Added
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 4.7

20 Jun 2024, 12:44

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se resolvió la siguiente vulnerabilidad: usb: dwc3: Espere incondicionalmente después de emitir el comando EndXfer Actualmente, todas las IP/revisiones del controlador excepto DWC3_usb3 >= 310a esperan 1 ms incondicionalmente para que ENDXFER se complete cuando el IOC no está configurado. Esto se debe a que las revisiones del controlador DWC_usb3 >= 3.10a admiten el bit GUCTL2[14: Rst_actbitlater] que permite sondear el bit CMDACT para saber si se completó el comando ENDXFER. Considere un caso en el que se puso en cola una solicitud IN y, en paralelo, se llamó a soft_disconnect (debido a ffs_epfile_release). Esto eventualmente llama a stop_active_transfer con el IOC borrado, por lo tanto, send_gadget_ep_cmd() omite la espera de que CMDACT se borre durante EndXfer. Para los controladores DWC3 con revisiones >= 310a, tampoco esperamos forzosamente 1 ms y procedemos a desasignar las solicitudes. Si ENDXFER no se completó en este momento, se producirán fallas de SMMU ya que el controlador aún estaría accediendo a esas solicitudes. Solucione este problema asegurando la finalización de ENDXFER agregando un retraso de 1 ms en __dwc3_stop_active_transfer() incondicionalmente.

18 Jun 2024, 20:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-06-18 20:15

Updated : 2025-10-01 15:53


NVD link : CVE-2024-36977

Mitre link : CVE-2024-36977

CVE.ORG link : CVE-2024-36977


JSON object : View

Products Affected

linux

  • linux_kernel