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

Summary

CVECVE-2026-63905
StatePUBLISHED
AssignerLinux
Source PriorityCVE Program / NVD first with legacy fallback
Published2026-07-19 16:17:08 UTC
Updated2026-07-19 16:17:08 UTC
DescriptionIn 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 vudc_probe(), v_init_timer() binds udc->tr_timer.timer to v_timer(). usbip_sockfd_store() starts the timer via v_start_timer()/v_kick_timer(). vudc_remove() can then free the containing struct vudc while the timer is still pending or executing. KASAN confirms the race on an unpatched x86_64 QEMU guest with CONFIG_KASAN=y, CONFIG_USBIP_VUDC=y, CONFIG_USB_ZERO=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 __run_timer_base.part.0+0x8ba/0x8e0 Write of size 8 at addr ffff888001b80740 by task trigger_and_unb/239 Allocated by task 239: vudc_probe+0x4d/0xaa0 Freed by task 239: kfree+0x18f/0x520 device_release_driver_internal+0x388/0x540 unbind_store+0xd9/0x100 This lands in the timer core rather than v_timer() itself because the embedded timer_list is being walked after its containing struct vudc has already been freed. The underlying lifetime bug is the same one Zheng reported. With v_stop_timer() called from vudc_remove() and the timer deleted synchronously, the same harness completed 5000 bind/unbind iterations with no KASAN report.

Risk And Classification

EPSS: 0.002100000 probability, percentile 0.113630000 (date 2026-07-20)

Vendor Declared Affected Products

SourceVendorProductVersionPlatforms
CNA Linux Linux affected b6a0ca11186759ad7045d68a5447b1e89f658384 61704e5cf9cd7464b510eb606e7e2978b1160a64 git Not specified
CNA Linux Linux affected b6a0ca11186759ad7045d68a5447b1e89f658384 dcc1c90b28b28b7c493547506297e78653f81952 git Not specified
CNA Linux Linux affected b6a0ca11186759ad7045d68a5447b1e89f658384 1036ac6148995feaf486014d32bf26bf993c06a9 git Not specified
CNA Linux Linux affected b6a0ca11186759ad7045d68a5447b1e89f658384 a0638db2340ee053ab0450656a763fd111475e54 git Not specified
CNA Linux Linux affected b6a0ca11186759ad7045d68a5447b1e89f658384 d07ed707467ce05ea9c03412d0c5ee9d0fe386a6 git Not specified
CNA Linux Linux affected b6a0ca11186759ad7045d68a5447b1e89f658384 88d459e5b5a46da1ef9fd6f52d9439343edeec88 git Not specified
CNA Linux Linux affected b6a0ca11186759ad7045d68a5447b1e89f658384 207bf80362df3fce8ebc9723351dcb1bc6d9ed0f git Not specified
CNA Linux Linux affected b6a0ca11186759ad7045d68a5447b1e89f658384 d96209626a29ea64666be98c30b30ac82e5f1be6 git Not specified
CNA Linux Linux affected 4.7 Not specified
CNA Linux Linux unaffected 4.7 semver Not specified
CNA Linux Linux unaffected 5.10.259 5.10.* semver Not specified
CNA Linux Linux unaffected 5.15.210 5.15.* semver Not specified
CNA Linux Linux unaffected 6.1.176 6.1.* semver Not specified
CNA Linux Linux unaffected 6.6.143 6.6.* semver Not specified
CNA Linux Linux unaffected 6.12.93 6.12.* semver Not specified
CNA Linux Linux unaffected 6.18.35 6.18.* semver Not specified
CNA Linux Linux unaffected 7.0.12 7.0.* semver Not specified
CNA Linux Linux unaffected 7.1 * original_commit_for_fix Not specified

References

ReferenceSourceLinkTags
git.kernel.org/stable/c/207bf80362df3fce8ebc9723351dcb1bc6d9ed0f 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/dcc1c90b28b28b7c493547506297e78653f81952 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/61704e5cf9cd7464b510eb606e7e2978b1160a64 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/a0638db2340ee053ab0450656a763fd111475e54 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/d96209626a29ea64666be98c30b30ac82e5f1be6 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/1036ac6148995feaf486014d32bf26bf993c06a9 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/88d459e5b5a46da1ef9fd6f52d9439343edeec88 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
git.kernel.org/stable/c/d07ed707467ce05ea9c03412d0c5ee9d0fe386a6 416baaa9-dc9f-4396-8d5f-8c081fb06d67 git.kernel.org
CVE Program record CVE.ORG www.cve.org canonical
NVD vulnerability detail NVD nvd.nist.gov canonical, analysis

© CVE.report 2026

Use of this information constitutes acceptance for use in an AS IS condition. There are NO warranties, implied or otherwise, with regard to this information or its use. Any use of this information is at the user's risk. It is the responsibility of user to evaluate the accuracy, completeness or usefulness of any information, opinion, advice or other content. EACH USER WILL BE SOLELY RESPONSIBLE FOR ANY consequences of his or her direct or indirect use of this web site. ALL WARRANTIES OF ANY KIND ARE EXPRESSLY DISCLAIMED. This site will NOT BE LIABLE FOR ANY DIRECT, INDIRECT or any other kind of loss.

CVE, CWE, and OVAL are registred trademarks of The MITRE Corporation and the authoritative source of CVE content is MITRE's CVE web site. This site includes MITRE data granted under the following license.

Free CVE JSON API cve.report/api

CVE.report and Source URL Uptime Status status.cve.report