CVE-2025-68282 usb: gadget: udc: fix use-after-free in usb_gadget_state_work

Not scored Published Updated

A race condition in the Linux kernel USB gadget driver allows local attackers to trigger a use-after-free, potentially leading to code execution or system crashes.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Local or same network only
Victim action needed
Not needed
Fix
Available

What is CVE-2025-68282?

CVE-2025-68282 is an use after free vulnerability in Linux, published on 16 Dec 2025. It can only be exploited from the same machine or local network, with no action from the victim.

Official description

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

usb: gadget: udc: fix use-after-free in usb_gadget_state_work

A race condition during gadget teardown can lead to a use-after-free in usb_gadget_state_work(), as reported by KASAN:

BUG: KASAN: invalid-access in sysfs_notify+0x2c/0xd0 Workqueue: events usb_gadget_state_work

The fundamental race occurs because a concurrent event (e.g., an interrupt) can call usb_gadget_set_state() and schedule gadget->work at any time during the cleanup process in usb_del_gadget().

Commit 399a45e5237c ("usb: gadget: core: flush gadget workqueue after device removal") attempted to fix this by moving flush_work() to after device_del(). However, this does not fully solve the race, as a new work item can still be scheduled *after* flush_work() completes but before the gadget's memory is freed, leading to the same use-after-free.

This patch fixes the race condition robustly by introducing a 'teardown' flag and a 'state_lock' spinlock to the usb_gadget struct. The flag is set during cleanup in usb_del_gadget() *before* calling flush_work() to prevent any new work from being scheduled once cleanup has commenced. The scheduling site, usb_gadget_set_state(), now checks this flag under the lock before queueing the work, thus safely closing the race window.

Which versions are affected by CVE-2025-68282?

How do I fix CVE-2025-68282?

Apply the vendor's patch.

Upgrade to the fixed version. These bugs are found with fuzzing and sanitisers and avoided by memory-safe languages. More about Use after free.

Is CVE-2025-68282 being exploited?

There is no known exploitation of CVE-2025-68282 in the wild and no public exploit code.

Sources

Also known as AZL-72568, BELL-CVE-2025-68282, DEBIAN-CVE-2025-68282, GHSA-8p7c-4hwq-mwgw, ROOT-OS-DEBIAN-11-CVE-2025-68282, ROOT-OS-DEBIAN-12-CVE-2025-68282 and 4 more.

Is CVE-2025-68282 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free