CVE-2026-46048: ALSA: caiaq: fix usb_dev refcount leak on probe failure
In the Linux kernel, the following vulnerability has been resolved:
ALSA: caiaq: fix usb_dev refcount leak on probe failure
create_card() takes a reference on the USB device with usb_get_dev()
and stores the matching usb_put_dev() in card_free(), which is
installed as the snd_card's ->private_free destructor.
However, ->private_free is only assigned near the end of init_card(),
after several failure points (usb_set_interface(), EP type checks,
usb_submit_urb(), the EP1_CMD_GET_DEVICE_INFO exchange, and its
timeout). When any of those fail, init_card() returns an error to
snd_probe(), which calls snd_card_free(card). Because ->private_free
is still NULL, card_free() never runs, the usb_get_dev() reference
is not dropped, and the struct usb_device leaks along with its
descriptor allocations and device_private.
syzbot reproduces this with a malformed UAC3 device whose only valid
altsetting is 0; init_card()'s usb_set_interface(usb_dev, 0, 1) call
fails with -EIO and triggers the leak.
Move the ->private_free assignment into create_card(), immediately
after usb_get_dev(), so that every error path reaching snd_card_free()
balances the reference. card_free()'s callees (snd_usb_caiaq_input_free,
free_urbs, kfree) already tolerate the partially-initialized state
because the chip private area is zero-initialized by snd_card_new().
Security readout for executives and security teams
Plain-English summary
This is a Linux kernel driver cleanup bug. A failed probe of a malformed USB audio device can leave a USB device reference unreleased, leaking kernel memory. The supplied sources do not show data theft, code execution, privilege escalation, or active exploitation.
Executive priority
Treat as routine kernel maintenance unless your environment processes untrusted USB devices. There is no supplied evidence of active exploitation or severe impact, but kernel resource leaks should still be closed through normal patch cycles.
Technical view
In the ALSA caiaq USB audio driver, create_card() takes a usb_get_dev() reference, but init_card() assigned the snd_card private_free destructor after several failure points. On early failure, snd_card_free() did not call card_free(), so usb_put_dev() never balanced the reference.
Likely exposure
Exposure appears limited to Linux systems using a kernel with the vulnerable caiaq driver path and encountering malformed or failing USB audio device probe conditions. The bundle does not identify remote exposure or broad service-facing attack surface.
Exploitation context
The source states syzbot reproduced the leak with a malformed UAC3 device. It does not cite KEV listing, in-the-wild exploitation, public weaponization, remote attackability, or confirmed security impact beyond memory/resource leakage.
Researcher notes
The fix moves private_free assignment into create_card() immediately after usb_get_dev(), ensuring snd_card_free() reaches card_free() on early init_card() failures. Sources describe tolerance for partially initialized state because snd_card_new() zero-initializes the private area.
Mitigation direction
Update to a vendor kernel containing the referenced stable fixes.
Prioritize systems that accept untrusted physical or virtual USB devices.
Restrict untrusted USB device attachment where operationally feasible.
Check Linux distribution advisories for packaged fixed kernel versions.
Validation and detection
Inventory Linux kernel versions on exposed workstations and servers.
Check whether ALSA caiaq driver support is present or loaded.
Map installed kernels against vendor advisories and referenced stable commits.
Review logs for repeated USB audio probe failures on relevant systems.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2026-46048 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
0CVSS vectors
3Timeline events
0ADP providers
9Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
May 27, 2026, 12:57 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.