CVE-2026-63905

Source
https://cve.org/CVERecord?id=CVE-2026-63905
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-63905.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-63905
Downstream
Published
2026-07-19T14:55:12.270Z
Modified
2026-07-21T03:47:37.891972114Z
Summary
usbip: vudc: Fix use after free bug in vudc_remove due to race condition
Details

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

usbip: vudc: Fix use after free bug in vudc_remove due to race condition

This patch follows up Zheng Wang's 2023 report of a use-after-free in vudc_remove(). The original thread stalled on Shuah Khan's request for runtime testing of the unplug/unbind path. This patch supplies that testing and keeps Zheng's original fix shape.

In vudcprobe(), vinittimer() binds udc->trtimer.timer to vtimer(). usbipsockfdstore() starts the timer via vstarttimer()/vkicktimer(). vudcremove() can then free the containing struct vudc while the timer is still pending or executing.

KASAN confirms the race on an unpatched x8664 QEMU guest with CONFIGKASAN=y, CONFIGUSBIPVUDC=y, CONFIGUSBZERO=y, and a tight loop that repeatedly writes a socket fd to usbip_sockfd, closes the socket pair, and unbinds/rebinds usbip-vudc.0:

BUG: KASAN: slab-use-after-free in _runtimerbase.part.0+0x8ba/0x8e0 Write of size 8 at addr ffff888001b80740 by task triggerandunb/239 Allocated by task 239: vudcprobe+0x4d/0xaa0 Freed by task 239: kfree+0x18f/0x520 devicereleasedriverinternal+0x388/0x540 unbindstore+0xd9/0x100

This lands in the timer core rather than vtimer() itself because the embedded timerlist is being walked after its containing struct vudc has already been freed. The underlying lifetime bug is the same one Zheng reported.

With vstoptimer() called from vudc_remove() and the timer deleted synchronously, the same harness completed 5000 bind/unbind iterations with no KASAN report.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/63xxx/CVE-2026-63905.json",
    "cna_assigner": "Linux"
}
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
b6a0ca11186759ad7045d68a5447b1e89f658384
Fixed
61704e5cf9cd7464b510eb606e7e2978b1160a64
Fixed
dcc1c90b28b28b7c493547506297e78653f81952
Fixed
1036ac6148995feaf486014d32bf26bf993c06a9
Fixed
a0638db2340ee053ab0450656a763fd111475e54
Fixed
d07ed707467ce05ea9c03412d0c5ee9d0fe386a6
Fixed
88d459e5b5a46da1ef9fd6f52d9439343edeec88
Fixed
207bf80362df3fce8ebc9723351dcb1bc6d9ed0f
Fixed
d96209626a29ea64666be98c30b30ac82e5f1be6

Database specific

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

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.7.0
Fixed
5.10.259
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.210
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.176
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.143
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.93
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.35
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.0.12

Database specific

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