CVE-2026-98765

USB: gadget: dummy-hcd: Fix wait for outstanding request completions

State
Published
Severity
Not scored
Published
Oct 18, 2026
Updated
Oct 30, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

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

USB: gadget: dummy-hcd: Fix wait for outstanding request completions

The dummy-hcd driver emulates synchronize_irq() by waiting until its private callback_usage counter drops to 0 (with the private lock not held). This counter is incremented whenever a gadget driver callback occurs (which requires the private lock to be dropped), but not when a request completion handler is called.

This is an oversight. Request completion is triggered by timer interrupts (emulating device IRQs in a real UDC), and the interrupt handlers are supposed to have completed when the synchronize_irq() emulation routine returns -- they aren't supposed to be in the middle of a completion callback. If this happens it can lead to a gadget driver's unbind routine running before all outstanding request completions have finished, maybe even allowing the gadget driver's module to be unloaded while a completion handler is still running.

Fix the oversight by incrementing the callback_usage value across request completion callbacks.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 7dbd8f4cabd96db5a50513de9d83a8105a5ffc81 to before 32721319e89a2be610b0518b88f0d188ce878063Affected
  • 7dbd8f4cabd96db5a50513de9d83a8105a5ffc81 to before 48ef54100ceffbd1a055f193873574c45f408eb5Affected
  • 7dbd8f4cabd96db5a50513de9d83a8105a5ffc81 to before d77cc7c0d739fb17413714c5c4914bd396502e20Affected
  • 7dbd8f4cabd96db5a50513de9d83a8105a5ffc81 to before 6849e51b89de5b6fc7447dc8e612b58df19c7deaAffected
  • 7dbd8f4cabd96db5a50513de9d83a8105a5ffc81 to before 7ce4dca0d53b1c3cb2b7e7bb2e42bf5db860caf2Affected
  • 7dbd8f4cabd96db5a50513de9d83a8105a5ffc81 to before 5298c96bf0068f3160969f7ddad81976d01a9b66Affected
  • 7dbd8f4cabd96db5a50513de9d83a8105a5ffc81 to before 3070806a7bc7bb36ed04a21022c09dafcc5619f4Affected
  • 7dbd8f4cabd96db5a50513de9d83a8105a5ffc81 to before b263ff9b0fc5c1f371d65c4eb196b31263d039ffAffected
  • 7b416b9dac6ede26d4ca0c1a88b448b543623ff3Affected
  • 8590bc1da625dd4a589eac0fc3aa3cf4f400424dAffected
  • a867d5b932ac4911d3f8a1e63505061b0c81f889Affected
  • e84b4a008365b7edbd842a063ae28d040a98db25Affected
  • e39b17143a5b5aac81f066d455e5d3a9877eb3aeAffected
  • 4f8ae1fcb0dfbb72a7678f81bf01fb7fc85c6715Affected
  • 3.2.97 to before 3.3Affected
  • 3.16.52 to before 3.17Affected
  • 4.1.46 to before 4.2Affected
  • 4.4.92 to before 4.5Affected
  • 4.9.55 to before 4.10Affected
  • 4.13.6 to before 4.14Affected
LinuxLinux
  • 4.14Affected
  • before 4.14Not affected
  • 5.10.273 through 5.10.*Not affected
  • 5.15.224 through 5.15.*Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.113 through 6.12.*Not affected
  • 6.18.56 through 6.18.*Not affected
  • 7.2.10 through 7.2.*Not affected
  • 7.3 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.