CVE-2025-68282: usb: gadget: udc: fix use-after-free in usb_gadget_state_work
In the Linux kernel, the following vulnerability has been resolved:
usb: gadget: udc: fix use-after-free in usbgadgetstatework
A race condition during gadget teardown can lead to a use-after-free in usbgadgetstatework(), as reported by KASAN:
BUG: KASAN: invalid-access in sysfsnotify+0x2c/0xd0 Workqueue: events usbgadgetstatework
The fundamental race occurs because a concurrent event (e.g., an interrupt) can call usbgadgetsetstate() and schedule gadget->work at any time during the cleanup process in usbdelgadget().
Commit 399a45e5237c ("usb: gadget: core: flush gadget workqueue after device removal") attempted to fix this by moving flushwork() to after devicedel(). However, this does not fully solve the race, as a new work item can still be scheduled after flushwork() 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 'statelock' spinlock to the usbgadget struct. The flag is set during cleanup in usbdelgadget() before calling flushwork() to prevent any new work from being scheduled once cleanup has commenced. The scheduling site, usbgadgetsetstate(), now checks this flag under the lock before queueing the work, thus safely closing the race window.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2025-68282?
CVE-2025-68282 is a critical severity vulnerability that can lead to a use-after-free in the Linux kernel.
How do I fix CVE-2025-68282?
To fix CVE-2025-68282, ensure that you are using an updated version of the Linux kernel where the vulnerability has been patched.
What systems are affected by CVE-2025-68282?
CVE-2025-68282 affects Linux kernel builds that use USB gadget functionality.
What is the nature of the vulnerability in CVE-2025-68282?
CVE-2025-68282 involves a race condition during gadget teardown that can lead to invalid memory access.
Is CVE-2025-68282 being actively exploited?
As of now, there is no public indication that CVE-2025-68282 is actively being exploited.