CVE-2026-64594

Source
https://cve.org/CVERecord?id=CVE-2026-64594
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64594.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-64594
Downstream
Published
2026-08-06T07:13:50.309Z
Modified
2026-08-08T03:48:19.088022295Z
Summary
usb: gadget: f_fs: initialize reset_work at allocation time
Details

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

usb: gadget: ffs: initialize resetwork at allocation time

ffsfskillsb() unconditionally calls cancelworksync() on ffs->resetwork when a functionfs instance is unmounted:

ffs_data_reset(ffs);
cancel_work_sync(&ffs->reset_work);

However ffs->resetwork is only ever initialized via INITWORK() in ffsfuncsetalt() and ffsfuncdisable(), and only on the FFSDEACTIVATED path. That state is reached solely by ffsdataclosed() when the instance is mounted with the "nodisconnect" option, so for the common case (no "nodisconnect", or mounted and unmounted without ever being deactivated) reset_work is never initialized.

ffsdatanew() allocates the ffsdata with kzallocobj() and does not initialize resetwork, and ffsdatareset()/ffsdataclear() do not touch it either, so resetwork.func is left NULL. cancelworksync() on such a work then trips the WARN_ON(!work->func) guard in _flushwork():

WARNING: kernel/workqueue.c:4301 at __flush_work+0x330/0x360, CPU#3: umount Call trace: __flushwork cancelworksync ffsfskillsb [usbffs] deactivatelockedsuper deactivatesuper cleanupmnt __cleanupmnt taskworkrun exittousermodeloop el0svc

On older kernels cancelworksync() on a zero-initialized work struct was a silent no-op, which hid the missing initialization.

Initialize resetwork once in ffsdatanew() so it is always valid for the lifetime of the ffsdata, and drop the now-redundant INIT_WORK() calls from the two deactivation paths.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64594.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
18d6b32fca3841f7cd9479b4024abd8a9b299281
Fixed
7fe895e0a9651518c4fc082487da770ff9c14c7f
Fixed
0de6ebbabfbbc9c28350283dc97d8a519d5c6dd7
Fixed
cb19e54ebe9baf3c3243083ade65c937339ccb7b
Fixed
d5631081be07f20e764d3cb5c98ac0a1004fba51
Fixed
c36393b0d14e1e9783888f821ffe29381b8f46dc
Fixed
69faa3779250df14f51d5084f938a99809546e52
Fixed
ba1867999dbc4085e6d8c52ac5266005b8b2bf07
Fixed
3137b243c93982fe3460335e12f9247739766e10

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64594.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.0.0
Fixed
5.10.261
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.212
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.178
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.145
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.97
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.40
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.4

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64594.json"