Description
In the Linux kernel, the following vulnerability has been resolved:
USB: gadget: Fix obscure lockdep violation for udc_mutex
A recent commit expanding the scope of the udc_lock mutex in the
gadget core managed to cause an obscure and slightly bizarre lockdep
violation. In abbreviated form:
======================================================
WARNING: possible circular locking dependency detected
5.19.0-rc7+ #12510 Not tainted
------------------------------------------------------
udevadm/312 is trying to acquire lock:
ffff80000aae1058 (udc_lock){+.+.}-{3:3}, at: usb_udc_uevent+0x54/0xe0
but task is already holding lock:
ffff000002277548 (kn->active#4){++++}-{0:0}, at: kernfs_seq_start+0x34/0xe0
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #3 (kn->active#4){++++}-{0:0}:
lock_acquire+0x68/0x84
__kernfs_remove+0x268/0x380
kernfs_remove_by_name_ns+0x58/0xac
sysfs_remove_file_ns+0x18/0x24
device_del+0x15c/0x440
-> #2 (device_links_lock){+.+.}-{3:3}:
lock_acquire+0x68/0x84
__mutex_lock+0x9c/0x430
mutex_lock_nested+0x38/0x64
device_link_remove+0x3c/0xa0
_regulator_put.part.0+0x168/0x190
regulator_put+0x3c/0x54
devm_regulator_release+0x14/0x20
-> #1 (regulator_list_mutex){+.+.}-{3:3}:
lock_acquire+0x68/0x84
__mutex_lock+0x9c/0x430
mutex_lock_nested+0x38/0x64
regulator_lock_dependent+0x54/0x284
regulator_enable+0x34/0x80
phy_power_on+0x24/0x130
__dwc2_lowlevel_hw_enable+0x100/0x130
dwc2_lowlevel_hw_enable+0x18/0x40
dwc2_hsotg_udc_start+0x6c/0x2f0
gadget_bind_driver+0x124/0x1f4
-> #0 (udc_lock){+.+.}-{3:3}:
__lock_acquire+0x1298/0x20cc
lock_acquire.part.0+0xe0/0x230
lock_acquire+0x68/0x84
__mutex_lock+0x9c/0x430
mutex_lock_nested+0x38/0x64
usb_udc_uevent+0x54/0xe0
Evidently this was caused by the scope of udc_mutex being too large.
The mutex is only meant to protect udc->driver along with a few other
things. As far as I can tell, there's no reason for the mutex to be
held while the gadget core calls a gadget driver's ->bind or ->unbind
routine, or while a UDC is being started or stopped. (This accounts
for link #1 in the chain above, where the mutex is held while the
dwc2_hsotg_udc is started as part of driver probing.)
Gadget drivers' ->disconnect callbacks are problematic. Even though
usb_gadget_disconnect() will now acquire the udc_mutex, there's a
window in usb_gadget_bind_driver() between the times when the mutex is
released and the ->bind callback is invoked. If a disconnect occurred
during that window, we could call the driver's ->disconnect routine
before its ->bind routine. To prevent this from happening, it will be
necessary to prevent a UDC from connecting while it has no gadget
driver. This should be done already but it doesn't seem to be;
currently usb_gadget_connect() has no check for this. Such a check
will have to be added later.
Some degree of mutual exclusion is required in soft_connect_store(),
which can dereference udc->driver at arbitrary times since it is a
sysfs callback. The solution here is to acquire the gadget's device
lock rather than the udc_mutex. Since the driver core guarantees that
the device lock is always held during driver binding and unbinding,
this will make the accesses in soft_connect_store() mutually exclusive
with any changes to udc->driver.
Lastly, it turns out there is one place which should hold the
udc_mutex but currently does not: The function_show() routine needs
protection while it dereferences udc->driver. The missing lock and
unlock calls are added.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Linux | Linux | 5.19.7 – < 5.19.8 | 5.19.8 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | linux | 6.0.2-1 | — |
| Debian 13 | linux | 6.0.2-1 | — |
| Debian 12 | linux | 6.0.2-1 | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 24.04 LTS | linux-riscv +2 | No fix yet | — |
| Ubuntu 22.04 LTS | linux-riscv +32 | No fix yet | — |
| Ubuntu 20.04 LTS | linux-gke +28 | No fix yet | — |
| Ubuntu 18.04 LTS | linux-gcp +14 | No fix yet | — |
| Ubuntu 16.04 LTS | linux-hwe-edge | No fix yet | — |
Red Hat
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| RHEL 9 | bpftool | 7.0.0-284.11.1.el9_2 | RHSA-2023:2458 |
| RHEL 9 | perf +48 | 5.14.0-284.11.1.el9_2 | RHSA-2023:2458 |
SUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES 15 SP5 | kernel-64kb +6 | 5.14.21-150500.55.113.1 | SUSE-SU-2026:0474-1, SUSE-SU-2025:02264-1 |
| SLES 15 SP5 | kernel-default-base | 5.14.21-150500.55.113.1.150500.6.53.1 | SUSE-SU-2026:0474-1, SUSE-SU-2025:02264-1 |
| SLES 15 SP4 | kernel-64kb +6 | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLES 15 SP4 | kernel-default-base | 5.14.21-150400.24.194.1.150400.24.98.3 | SUSE-SU-2026:0617-1 |
| SLES 12 SP5 | kernel-syms +2 | 4.12.14-122.293.1 | SUSE-SU-2026:0473-1 |
Show 11 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES for SAP 15 SP5 | kernel-default-base | 5.14.21-150500.55.113.1.150500.6.53.1 | SUSE-SU-2026:0474-1, SUSE-SU-2025:02264-1 |
| SLES for SAP 15 SP5 | kernel-docs +4 | 5.14.21-150500.55.113.1 | SUSE-SU-2026:0474-1, SUSE-SU-2025:02264-1 |
| SLES for SAP 15 SP4 | kernel-default-base | 5.14.21-150400.24.194.1.150400.24.98.3 | SUSE-SU-2026:0617-1 |
| SLES for SAP 15 SP4 | kernel-docs +4 | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLE Micro 5.5 | kernel-default-base | 5.14.21-150500.55.113.1.150500.6.53.1 | SUSE-SU-2026:0474-1, SUSE-SU-2025:02264-1 |
| SLE Micro 5.5 | kernel-rt | 5.14.21-150500.13.100.2 | SUSE-SU-2026:0496-1, SUSE-SU-2025:02321-1 |
| SLE Micro 5.5 | kernel-source +1 | 5.14.21-150500.55.113.1 | SUSE-SU-2026:0474-1, SUSE-SU-2025:02264-1 |
| SLE Micro 5.5 | kernel-source-rt | 5.14.21-150500.13.100.1 | SUSE-SU-2026:0496-1, SUSE-SU-2025:02321-1 |
| SLE Micro 5.4 | kernel-default | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLE Micro 5.4 | kernel-default-base | 5.14.21-150400.24.194.1.150400.24.98.3 | SUSE-SU-2026:0617-1 |
| SLE Micro 5.4 | kernel-rt +1 | 5.14.21-150400.15.145.1 | SUSE-SU-2026:1131-1 |
| SLE Micro 5.3 | kernel-default | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLE Micro 5.3 | kernel-default-base | 5.14.21-150400.24.194.1.150400.24.98.3 | SUSE-SU-2026:0617-1 |
| SLE Micro 5.3 | kernel-rt +1 | 5.14.21-150400.15.145.1 | SUSE-SU-2026:1131-1 |
| SLE Micro 5.2 | kernel-default | 5.3.18-150300.59.235.1 | SUSE-SU-2026:0475-1 |
| SLE Micro 5.2 | kernel-default-base | 5.3.18-150300.59.235.1.150300.18.140.1 | SUSE-SU-2026:0475-1 |
| SLE Micro 5.2 | kernel-rt +1 | 5.3.18-150300.235.1 | SUSE-SU-2026:0495-1 |
| SLE Live Patching 15 SP5 | kernel-default | 5.14.21-150500.55.113.1 | SUSE-SU-2026:0474-1, SUSE-SU-2025:02264-1 |
| SLE Live Patching 15 SP5 | kernel-livepatch-SLE15-SP5_Update_28 +1 | 1-150500.11.3.1 | SUSE-SU-2026:0474-1, SUSE-SU-2025:02264-1 |
| SLE Live Patching 15 SP4 | kernel-default | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLE Live Patching 15 SP4 | kernel-livepatch-SLE15-SP4_Update_48 | 1-150400.9.7.1 | SUSE-SU-2026:0617-1 |
| SLE Live Patching 12 SP5 | kernel-default | 4.12.14-122.293.1 | SUSE-SU-2026:0473-1 |
| SLE Live Patching 12 SP5 | kgraft-patch-SLE12-SP5_Update_77 | 1-8.3.1 | SUSE-SU-2026:0473-1 |
| SLE HPC 15 SP5 | kernel-64kb +5 | 5.14.21-150500.55.113.1 | SUSE-SU-2026:0474-1, SUSE-SU-2025:02264-1 |
| SLE HPC 15 SP5 | kernel-default-base | 5.14.21-150500.55.113.1.150500.6.53.1 | SUSE-SU-2026:0474-1, SUSE-SU-2025:02264-1 |
| SLE HPC 15 SP4 | kernel-64kb +5 | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLE HPC 15 SP4 | kernel-default-base | 5.14.21-150400.24.194.1.150400.24.98.3 | SUSE-SU-2026:0617-1 |
Advisories 11
- WID-SEC-2025-1350 Linux Kernel: Mehrere Schwachstellen ermöglichen Denial of Service BSI CERT-Bund (WID) · Nov 12, 2026
- RHSA-2023:2458 Red Hat Security Advisory: kernel security, bug fix, and enhancement update Red Hat Security Advisories (RHSA) · Oct 17, 2026
- SUSE-SU-2026:1131-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 31, 2026
- SUSE-SU-2026:0495-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0496-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0474-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0475-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0473-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:02321-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0617-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 26, 2026
- SUSE-SU-2025:02264-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026