CVE-2026-74639

Source
https://cve.org/CVERecord?id=CVE-2026-74639
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-74639.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-74639
Downstream
Published
2026-08-22T15:32:18.236Z
Modified
2026-08-24T11:46:11.566092297Z
Summary
ALSA: us144mkii: re-anchor capture URBs on resubmission
Details

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

ALSA: us144mkii: re-anchor capture URBs on resubmission

captureurbcomplete() resubmits each capture URB without anchoring it:

usb_get_urb(urb);
ret = usb_submit_urb(urb, GFP_ATOMIC);

Anchoring is a property of a submission, not of the URB. The giveback path calls usbunanchorurb() before urb->complete(), so an URB resubmitted from its own completion handler is off the anchor. The capture URBs are anchored once, at stream start, so from the first completion onward tascam->capture_anchor is empty.

tascamfreeurbs(), tascamdisconnect(), tascamsuspend() and the stop-work path all call usbkillanchoredurbs(&tascam->captureanchor) to reap the capture URBs before anything is freed. With the anchor empty those calls return immediately and the URBs stay queued on the host controller.

tascamfreeurbs() then returns the capture transfer buffers with usbfreecoherent(), and sndcardfree() releases the sndcard allocation that embeds tascam (card->privatedata). The controller completes the queued URBs afterwards, writing device-supplied data into the freed transfer buffer, and captureurbcomplete() dereferences the freed driver object.

KASAN on 7.2.0-rc5 (arm64):

BUG: KASAN: slab-use-after-free in dummy_timer Write of size 512 at addr ffff000015b62000 __asanmemcpy dummytimer hrtimerrunsoftirq Allocated by task 64: usballoccoherent tascamallocurbs tascamprobe Freed by task 170: usbfreecoherent tascamfreeurbs tascamdisconnect usbunbindinterface

BUG: KASAN: slab-use-after-free in captureurbcomplete Read of size 4 at addr ffff0000170ee878 Freed by task 170: releasecarddevice sndcardfree tascam_disconnect

Restore the usbanchorurb() between the reference count bump and the resubmission. That also makes the handler's usbunanchorurb() failure arm meaningful again and restores usbkillanchored_urbs() as a barrier on the disconnect, suspend and stop-work paths.

The anchoring was removed on the premise that the URB is already anchored from the initial submission, which does not hold once the first giveback has run.

Discovered by XBOW, triaged by Baul Lee baul.lee@xbow.com

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/74xxx/CVE-2026-74639.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
16f14f55141d4c55c3f321f93c328fff7cd6860a
Fixed
7779249561d14b8a17c0c83783225794e24a587d
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
ab1db64912428cdf06a4f9542e16e0575e9ad59f
Fixed
a5548ce916594c811bd90ce33d67baa3557a6791
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
5cff1529a2f9b3461a7f5a6e36a86682fc290534
Fixed
2615f0fb90df8cf5a96133ca4be74294ed288604

Affected versions

v6.*
v6.18.39
v6.18.40
v6.18.41
v6.18.42
v6.18.43
v6.18.44
v7.*
v7.1.4
v7.1.5
v7.1.6
v7.1.7
v7.1.8

Database specific

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

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.18.39
Fixed
6.18.45
Type
ECOSYSTEM
Events
Introduced
7.1.4
Fixed
7.1.9

Database specific

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