CVE-2026-64594

usb: gadget: f_fs: initialize reset_work at allocation time

N/A
Published: August 6, 2026 at 07:13 AM UTC
Updated: August 17, 2026 at 05:18 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
N/A
Exploit prediction
EPSS 0.2%

Description

In the Linux kernel, the following vulnerability has been resolved: usb: gadget: f_fs: initialize reset_work at allocation time ffs_fs_kill_sb() unconditionally calls cancel_work_sync() on ffs->reset_work when a functionfs instance is unmounted: ffs_data_reset(ffs); cancel_work_sync(&ffs->reset_work); However ffs->reset_work is only ever initialized via INIT_WORK() in ffs_func_set_alt() and ffs_func_disable(), and only on the FFS_DEACTIVATED path. That state is reached solely by ffs_data_closed() when the instance is mounted with the "no_disconnect" option, so for the common case (no "no_disconnect", or mounted and unmounted without ever being deactivated) reset_work is never initialized. ffs_data_new() allocates the ffs_data with kzalloc_obj() and does not initialize reset_work, and ffs_data_reset()/ffs_data_clear() do not touch it either, so reset_work.func is left NULL. cancel_work_sync() on such a work then trips the WARN_ON(!work->func) guard in __flush_work(): WARNING: kernel/workqueue.c:4301 at __flush_work+0x330/0x360, CPU#3: umount Call trace: __flush_work cancel_work_sync ffs_fs_kill_sb [usb_f_fs] deactivate_locked_super deactivate_super cleanup_mnt __cleanup_mnt task_work_run exit_to_user_mode_loop el0_svc On older kernels cancel_work_sync() on a zero-initialized work struct was a silent no-op, which hid the missing initialization. Initialize reset_work once in ffs_data_new() so it is always valid for the lifetime of the ffs_data, and drop the now-redundant INIT_WORK() calls from the two deactivation paths.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

4.0 ≤ v < 5.10.2614.0 ≤ v < 5.15.2124.0 ≤ v < 6.1.1784.0 ≤ v < 6.12.974.0 ≤ v < 6.18.404.0 ≤ v < 6.6.1454.0 ≤ v < 7.1.44.0 ≤ v < 7.218d6b32fca3841f7cd9479b4024abd8a9b2992814.0
Vendor states this is fixed in 0de6ebbabfbbc9c28350283dc97d8a519d5c6dd7 (fixed)
Vendor states this is fixed in 3137b243c93982fe3460335e12f9247739766e10 (fixed)
Vendor states this is fixed in 69faa3779250df14f51d5084f938a99809546e52 (fixed)
Vendor states this is fixed in 7fe895e0a9651518c4fc082487da770ff9c14c7f (fixed)
Vendor states this is fixed in ba1867999dbc4085e6d8c52ac5266005b8b2bf07 (fixed)
Vendor states this is fixed in c36393b0d14e1e9783888f821ffe29381b8f46dc (fixed)
Vendor states this is fixed in cb19e54ebe9baf3c3243083ade65c937339ccb7b (fixed)
Vendor states this is fixed in d5631081be07f20e764d3cb5c98ac0a1004fba51 (fixed)
Vendor states this is fixed in 4.0 (unaffected)
Vendor states this is fixed in 5.10.261 (unaffected)
Vendor states this is fixed in 5.15.212 (unaffected)
Vendor states this is fixed in 6.1.178 (unaffected)
Vendor states this is fixed in 6.12.97 (unaffected)
Vendor states this is fixed in 6.18.40 (unaffected)
Vendor states this is fixed in 6.6.145 (unaffected)
Vendor states this is fixed in 7.1.4 (unaffected)
Vendor states this is fixed in 7.2 (unaffected)

Remediation

No guide yet

No remediation guidance has been written for this CVE yet, and no fixed version or vendor advisory is recorded against it.

Quick Info

StatusRECEIVED

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card