CVE-2026-64331: usbip: vudc: fix NULL deref in vep_dequeue()
Greg Kroah-Hartman <[email protected]> Sat, 25 Jul 2026 10:49:08 +0200
| Newsgroups | org.kernel.vger.linux-cve-announce |
|---|---|
| Message-ID | <2026072513-CVE-2026-64331-7a76@gregkh> |
From: Greg Kroah-Hartman <[email protected]> Description =========== In the Linux kernel, the following vulnerability has been resolved: usbip: vudc: fix NULL deref in vep_dequeue() vep_alloc_request() wasn't initializing vrequest->udc, so cancellations on the FunctionFS AIO path were arriving in vep_dequeue without a valid UDC reference. Since vrequest->udc is never actually properly used anywhere, we opt to remove it, and update vep_dequeue to obtain a reference to the udc with ep_to_vudc(), consistent with the other vep_ ops. AFAICT this bug has existed for ~10 years. Seems that nobody has really stressed the FunctionFS AIO path on usbip's vudc. I tested this fix in a QEMU aarch64 guest driving FunctionFS endpoints via AIO. Before the fix, running `usbip attach` from the host would cause the guest to oops with the following backtrace: Call trace: vep_dequeue+0x1c/0xe4 (P) usb_ep_dequeue+0x14/0x20 ffs_aio_cancel+0x24/0x34 __arm64_sys_io_cancel+0xb0/0x124 do_el0_svc+0x68/0x100 el0_svc+0x18/0x5c el0t_64_sync_handler+0x98/0xdc el0t_64_sync+0x154/0x158 The Linux kernel CVE team has assigned CVE-2026-64331 to this issue. Affected and fixed versions =========================== Issue introduced in 4.7 with commit b6a0ca11186759ad7045d68a5447b1e89f658384 and fixed in 5.10.261 with commit 9858c91d9ee6a13c45311569039413729fc9b757 Issue introduced in 4.7 with commit b6a0ca11186759ad7045d68a5447b1e89f658384 and fixed in 5.15.212 with commit 1226293ec9bed3d4cc5b05eeeb811d315ca51652 Issue introduced in 4.7 with commit b6a0ca11186759ad7045d68a5447b1e89f658384 and fixed in 6.1.178 with commit 3750f75f29f99c0223601e2ee73ad084adec47bd Issue introduced in 4.7 with commit b6a0ca11186759ad7045d68a5447b1e89f658384 and fixed in 6.6.145 with commit d0ebf9cc7c2ddf95a7cfc654b940bdacb7edde97 Issue introduced in 4.7 with commit b6a0ca11186759ad7045d68a5447b1e89f658384 and fixed in 6.12.96 with commit 0025276175fbbe0dcbf3f84d090b0adee769e9d9 Issue introduced in 4.7 with commit b6a0ca11186759ad7045d68a5447b1e89f658384 and fixed in 6.18.39 with commit 347b59e9f96719d89b6ef555d02a18ada1a5846f Issue introduced in 4.7 with commit b6a0ca11186759ad7045d68a5447b1e89f658384 and fixed in 7.1.4 with commit 0443e4416aa1ee97748d1ed904eaf3352c60045e Issue introduced in 4.7 with commit b6a0ca11186759ad7045d68a5447b1e89f658384 and fixed in 7.2-rc3 with commit c5371e0b91b24159a3ebaa61e70b0980bcf03c0a Please see https://www.kernel.org for a full list of currently supported kernel versions by the kernel community. Unaffected versions might change over time as fixes are backported to older supported kernel versions. The official CVE entry at https://cve.org/CVERecord/?id=CVE-2026-64331 will be updated if fixes are backported, please check that for the most up to date information about this issue. Affected files ============== The file(s) affected by this issue are: drivers/usb/usbip/vudc.h drivers/usb/usbip/vudc_dev.c Mitigation ========== The Linux kernel CVE team recommends that you update to the latest stable kernel version for this, and many other bugfixes. Individual changes are never tested alone, but rather are part of a larger kernel release. Cherry-picking individual commits is not recommended or supported by the Linux kernel community at all. If however, updating to the latest release is impossible, the individual changes to resolve this issue can be found at these commits: https://git.kernel.org/stable/c/9858c91d9ee6a13c45311569039413729fc9b757 https://git.kernel.org/stable/c/1226293ec9bed3d4cc5b05eeeb811d315ca51652 https://git.kernel.org/stable/c/3750f75f29f99c0223601e2ee73ad084adec47bd https://git.kernel.org/stable/c/d0ebf9cc7c2ddf95a7cfc654b940bdacb7edde97 https://git.kernel.org/stable/c/0025276175fbbe0dcbf3f84d090b0adee769e9d9 https://git.kernel.org/stable/c/347b59e9f96719d89b6ef555d02a18ada1a5846f https://git.kernel.org/stable/c/0443e4416aa1ee97748d1ed904eaf3352c60045e https://git.kernel.org/stable/c/c5371e0b91b24159a3ebaa61e70b0980bcf03c0a