CVE-2024-56687

linux: In the Linux kernel, the following vulnerability has been resolved: usb: musb: Fix hardware lockup on first Rx endpo...

CVE-2024-56687 is fixed in 82 products on 1 platform, first by DEBIAN-CVE-2024-56687, released December 28, 2024. It is not reported as exploited. Patch Radar priority: Routine.

Routine
CVSS
5.5
medium
Exploitation
None reported
No vendor assessment
CISA KEV
Not listed
Not in the Known Exploited Vulnerabilities catalog
EPSS
0.0016
5th percentile

In the Linux kernel, the following vulnerability has been resolved: usb: musb: Fix hardware lockup on first Rx endpoint request There is a possibility that a request's callback could be invoked from usb_ep_queue() (call trace below, supplemented with missing calls): req->complete from usb_gadget_giveback_request (drivers/usb/gadget/udc/core.c:999) usb_gadget_giveback_request from musb_g_giveback (drivers/usb/musb/musb_gadget.c:147) musb_g_giveback from rxstate (drivers/usb/musb/musb_gadget.c:784) rxstate from musb_ep_restart (drivers/usb/musb/musb_gadget.c:1169) musb_ep_restart from musb_ep_restart_resume_work (drivers/usb/musb/musb_gadget.c:1176) musb_ep_restart_resume_work from musb_queue_resume_work (drivers/usb/musb/musb_core.c:2279) musb_queue_resume_work from musb_gadget_queue (drivers/usb/musb/musb_gadget.c:1241) musb_gadget_queue from usb_ep_queue (drivers/usb/gadget/udc/core.c:300) According to the docstring of usb_ep_queue(), this should not happen: "Note that @req's ->complete() callback must never be called from within usb_ep_queue() as that can create deadlock situations." In fact, a hardware lockup might occur in the following sequence: 1. The gadget is initialized using musb_gadget_enable(). 2. Meanwhile, a packet arrives, and the RXPKTRDY flag is set, raising an interrupt. 3. If IRQs are enabled, the interrupt is handled, but musb_g_rx() finds an empty queue (next_request() returns NULL). The interrupt flag has already been cleared by the glue layer handler, but the RXPKTRDY flag remains set. 4. The first request is enqueued using usb_ep_queue(), leading to the call of req->complete(), as shown in the call trace above. 5. If the callback enables IRQs and another packet is waiting, step (3) repeats. The request queue is empty because usb_g_giveback() removes the request before invoking the callback. 6. The endpoint remains locked up, as the interrupt triggered by hardware setting the RXPKTRDY flag has been handled, but the flag itself remains set. For this scenario to occur, it is only necessary for IRQs to be enabled at some point during the complete callback. This happens with the USB Ethernet gadget, whose rx_complete() callback calls netif_rx(). If called in the task context, netif_rx() disables the bottom halves (BHs). When the BHs are re-enabled, IRQs are also enabled to allow soft IRQs to be processed. The gadget itself is initialized at module load (or at boot if built-in), but the first request is enqueued when the network interface is brought up, triggering rx_complete() in the task context via ioctl(). If a packet arrives while the interface is down, it can prevent the interface from receiving any further packets from the USB host. The situation is quite complicated with many parties involved. This particular issue can be resolved in several possible ways: 1. Ensure that callbacks never enable IRQs. This would be difficult to enforce, as discovering how netif_rx() interacts with interrupts was already quite challenging and u_ether is not the only function driver. Similar "bugs" could be hidden in other drivers as well. 2. Disable MUSB interrupts in musb_g_giveback() before calling the callback and re-enable them afterwars (by calling musb_{dis,en}able_interrupts(), for example). This would ensure that MUSB interrupts are not handled during the callback, even if IRQs are enabled. In fact, it would allow IRQs to be enabled when releasing the lock. However, this feels like an inelegant hack. 3. Modify the interrupt handler to clear the RXPKTRDY flag if the request queue is empty. While this approach also feels like a hack, it wastes CPU time by attempting to handle incoming packets when the software is not ready to process them. 4. Flush the Rx FIFO instead of calling rxstate() in musb_ep_restart(). This ensures that the hardware can receive packets when there is at least one request in the queue. Once I ---truncated---

Where it's fixed

ProductFixed inFixReleased
Linux
bpftool · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
bpftool-debuginfo · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
dtb-aarch64 · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-64kb · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-64kb · sles 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-azure · opensuse-leap 15.6 6.4.0-150600.8.26.1 SUSE-SU-2025:0428-1 Feb 11, 2025
kernel-azure · sles 15.6 6.4.0-150600.8.26.1 SUSE-SU-2025:0428-1 Feb 11, 2025
kernel-coco · sles 15.6 6.4.0-15061.12.coco15sp6.1 SUSE-SU-2025:0289-1 Jan 29, 2025
kernel-coco_debug · sles 15.6 6.4.0-15061.12.coco15sp6.1 SUSE-SU-2025:0289-1 Jan 29, 2025
kernel-debug · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-debuginfo · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-debuginfo-common-aarch64 · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-debuginfo-common-x86_64 · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-default · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-default · sles 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-default-base · opensuse-leap 15.6 6.4.0-150600.23.38.1.150600.12.16.2 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-default-base · sles 15.6 6.4.0-150600.23.38.1.150600.12.16.2 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-devel · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-docs · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-docs · sles 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-headers · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-kvmsmall · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-libbpf · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-libbpf-devel · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-libbpf-static · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-livepatch-6.1.124-134.200 · amzn 2023 1.0-0.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-livepatch-SLE15-SP6-RT_Update_8 · sles 15.6 1-150600.1.3.1 SUSE-SU-2025:0557-1 Feb 14, 2025
kernel-livepatch-SLE15-SP6_Update_8 · sles 15.6 1-150600.13.3.2 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-modules-extra · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-modules-extra-common · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-obs-build · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-obs-build · sles 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-obs-qa · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-rt · opensuse-leap 15.6 6.4.0-150600.10.26.1 SUSE-SU-2025:0557-1 Feb 14, 2025
kernel-rt_debug · opensuse-leap 15.6 6.4.0-150600.10.26.1 SUSE-SU-2025:0557-1 Feb 14, 2025
kernel-source · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-source · sles 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-source-azure · opensuse-leap 15.6 6.4.0-150600.8.26.1 SUSE-SU-2025:0428-1 Feb 11, 2025
kernel-source-azure · sles 15.6 6.4.0-150600.8.26.1 SUSE-SU-2025:0428-1 Feb 11, 2025
kernel-source-coco · sles 15.6 6.4.0-15061.12.coco15sp6.1 SUSE-SU-2025:0289-1 Jan 29, 2025
kernel-source-rt · opensuse-leap 15.6 6.4.0-150600.10.26.1 SUSE-SU-2025:0557-1 Feb 14, 2025
kernel-syms · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-syms · sles 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-syms-azure · opensuse-leap 15.6 6.4.0-150600.8.26.1 SUSE-SU-2025:0428-1 Feb 11, 2025
kernel-syms-azure · sles 15.6 6.4.0-150600.8.26.1 SUSE-SU-2025:0428-1 Feb 11, 2025
kernel-syms-coco · sles 15.6 6.4.0-15061.12.coco15sp6.1 SUSE-SU-2025:0289-1 Jan 29, 2025
kernel-syms-rt · opensuse-leap 15.6 6.4.0-150600.10.26.1 SUSE-SU-2025:0557-1 Feb 14, 2025
kernel-tools · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-tools-debuginfo · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-tools-devel · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
kernel-uek · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-core · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-core · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-core · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-core · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-devel · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-devel · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-core · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-core · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-deprecated · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-deprecated · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-desktop · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-desktop · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-extra · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-extra · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-extra-netfilter · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-extra-netfilter · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-usb · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-usb · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-wireless · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-debug-modules-wireless · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-devel · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-devel · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-doc · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-doc · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-core · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-core · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-deprecated · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-deprecated · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-desktop · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-desktop · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-extra · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-extra · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-extra-netfilter · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-extra-netfilter · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-usb · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-usb · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-wireless · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-modules-wireless · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-tools · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek-tools · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-core · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-core · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-devel · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-devel · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-core · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-core · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-deprecated · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-deprecated · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-desktop · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-desktop · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-extra · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-extra · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-extra-netfilter · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-extra-netfilter · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-usb · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-usb · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-wireless · ol 10 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-uek64k-modules-wireless · ol 9 0:6.12.0-101.33.4.3.el9uek ELSA-2025-20480 Jul 17, 2025
kernel-zfcpdump · opensuse-leap 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
kernel-zfcpdump · sles 15.6 6.4.0-150600.23.38.1 SUSE-SU-2025:0499-1 Feb 13, 2025
linux · Debian 12.15 (bookworm) 6.1.123-1 DEBIAN-CVE-2024-56687 Dec 28, 2024
linux · Debian 13.5 (trixie) 6.12.3-1 DEBIAN-CVE-2024-56687 Dec 28, 2024
linux · Debian 14 6.12.3-1 DEBIAN-CVE-2024-56687 Dec 28, 2024
perf · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
perf-debuginfo · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
python3-perf · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025
python3-perf-debuginfo · amzn 2023 6.1.124-134.200.amzn2023 ALAS2023-2025-809 Jan 21, 2025

Patch Radar data is free to use with attribution. Terms and how to credit it.

Product names, logos and trademarks shown on Patch Radar belong to their respective owners. They are used only to identify the software each security fix applies to and to help readers find their platform. Their use does not imply any affiliation with, or endorsement by, those owners, and Patchblox is not affiliated with any of them.