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