CVE-2026-31756

usb: dwc2: gadget: Fix spin_lock/unlock mismatch in dwc2_hsotg_udc_stop()

published May 1, 2026

CVSS
—
EPSS
0%
Percentile
2.1
In the wild
Unconfirmed
What it is

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

usb: dwc2: gadget: Fix spin_lock/unlock mismatch in dwc2_hsotg_udc_stop()

dwc2_gadget_exit_clock_gating() internally calls call_gadget() macro,

which expects hsotg->lock to be held since it does spin_unlock/spin_lock

around the gadget driver callback invocation.

However, dwc2_hsotg_udc_stop() calls dwc2_gadget_exit_clock_gating()

without holding the lock. This leads to:

- spin_unlock on a lock that is not held (undefined behavior)

- The lock remaining held after dwc2_gadget_exit_clock_gating() returns,

causing a deadlock when spin_lock_irqsave() is called later in the

same function.

Fix this by acquiring hsotg->lock before calling

dwc2_gadget_exit_clock_gating() and releasing it afterwards, which

satisfies the locking requirement of the call_gadget() macro.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00125 · 2.1th percentile
Published
2026-05-01T14:14Z
EPSS history
Timeline
  • 01 MAY 14:14Z
    usb: dwc2: gadget: Fix spin_lock/unlock mismatch in dwc2_hsotg_udc_stop()
    cvelistv5