CVE-2026-31756

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

State
Published
Severity
Not scored
Published
May 1, 2026
Updated
May 23, 2026
Reserved
Mar 9, 2026

Read the record on cve.org

Description

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 5cb3cb3db317c58d50b68f3ca3bb8343ea9d1acd to before e9fcca3e87463013d595c65c2189ffaa32ad3b50Affected
  • 1ac826cebc2776f91569f2aa9c9c3da2375d2096 to before 8ffe31acb3b77a30ae34d01719a269881569fb7fAffected
  • 41732f9febdccb4f9b87c13cb915d717d68ccafd to before beab10429439e20708036a66fb0d97ffb79da6a1Affected
  • ba78c2b3254c4a458c01776612e8a573e12f8d26 to before 4ed9d2dd9f29828c311db6ec4b8e0d34bfd6d6a4Affected
  • af076a41f8a28faf9ceb9dd2d88aef2c202ef39a to before 61937f686290494998236c680ce0836b8dd63a3fAffected
  • af076a41f8a28faf9ceb9dd2d88aef2c202ef39a to before 51b62286fc668c6eb74dee7624ec0beec3c5a0edAffected
  • af076a41f8a28faf9ceb9dd2d88aef2c202ef39a to before 9bb4b5ed7f8c4f95cc556bdf042b0ba2fa13557aAffected
  • b39c203690fa1678daecc60f347e43c8b593b969Affected
  • 5.15.187 to before 5.15.203Affected
  • 6.1.143 to before 6.1.168Affected
  • 6.6.96 to before 6.6.134Affected
  • 6.12.36 to before 6.12.81Affected
  • 6.15.5 to before 6.16Affected
LinuxLinux
  • 6.16Affected
  • before 6.16Not affected
  • 5.15.203 through 5.15.*Not affected
  • 6.1.168 through 6.1.*Not affected
  • 6.6.134 through 6.6.*Not affected
  • 6.12.81 through 6.12.*Not affected
  • 6.18.22 through 6.18.*Not affected
  • 6.19.12 through 6.19.*Not affected
  • 7.0 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.