Monitor vulnerabilities like this one. Sign up free to get alerted when software you use is affected.
7.8

CVE-2022-49980: Linux Kernel: Critical USB Driver Bug Can Cause Data Loss

CVE-2022-49980
Summary

A bug in the Linux kernel's USB driver can cause data loss due to a race condition between the driver and a system event handler. This bug can occur when a USB gadget driver is being unregistered while the system is processing USB events. To fix this issue, the kernel developers have made changes to ensure that the driver is accessed safely while it is being used by the system.

What to do

No fix is available yet. Check with your software vendor for updates.

Affected software
VendorProductAffected versions
linux linux_kernel < 5.19.7
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Original title
In the Linux kernel, the following vulnerability has been resolved: USB: gadget: Fix use-after-free Read in usb_udc_uevent() The syzbot fuzzer found a race between uevent callbacks and gadget dri...
Original description
In the Linux kernel, the following vulnerability has been resolved:

USB: gadget: Fix use-after-free Read in usb_udc_uevent()

The syzbot fuzzer found a race between uevent callbacks and gadget
driver unregistration that can cause a use-after-free bug:

---------------------------------------------------------------
BUG: KASAN: use-after-free in usb_udc_uevent+0x11f/0x130
drivers/usb/gadget/udc/core.c:1732
Read of size 8 at addr ffff888078ce2050 by task udevd/2968

CPU: 1 PID: 2968 Comm: udevd Not tainted 5.19.0-rc4-next-20220628-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google
06/29/2022
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
print_address_description mm/kasan/report.c:317 [inline]
print_report.cold+0x2ba/0x719 mm/kasan/report.c:433
kasan_report+0xbe/0x1f0 mm/kasan/report.c:495
usb_udc_uevent+0x11f/0x130 drivers/usb/gadget/udc/core.c:1732
dev_uevent+0x290/0x770 drivers/base/core.c:2424
---------------------------------------------------------------

The bug occurs because usb_udc_uevent() dereferences udc->driver but
does so without acquiring the udc_lock mutex, which protects this
field. If the gadget driver is unbound from the udc concurrently with
uevent processing, the driver structure may be accessed after it has
been deallocated.

To prevent the race, we make sure that the routine holds the mutex
around the racing accesses.
nvd CVSS3.1 7.8
Vulnerability type
CWE-416 Use After Free
Published: 18 Jun 2025 · Updated: 23 Jul 2026 · First seen: 7 Mar 2026