CVE-2026-31701: Linux kernel · ALSA: caiaq: take a reference on the USB device in create_card()
Affects Linux kernelSource CVE Database V5
Not known to be exploited · fixed in f6634af5de728a46792f674a66d7843570cb68f7 : update Linux kernel when convenient.
Data as of 6 Nov 2026, 16:04 UTC
Rated by Threat Radar · No CVSS score from NVD or the CNA
Thin evidence
One scorer or none- CISA SSVC
- Exploitation
- No evidence of active exploitation and no public proof of concept
- Automatable
- Attackers cannot reliably automate steps 1–4 of the kill chain
- Technical impact
- Limited control over the software or limited information exposure
CISA SSVC assessment, 2026-11-06.
- Patch
- Available – fixed in f6634af5de728a46792f674a66d7843570cb68f7, dbcf7588e8dea017ddb3f18ec2766f7d2e5f2a0e, ac7345f68cda6989016d85d63f7b244c064aa8f6 +13
Exploitation evidence
Disclosed: evidence found.
CVE published 1 May 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 6 Nov 2026.
What to do
Upgrade to a fixed release listed under Affected software.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| LinuxLinux | Affected
| Fixed in
|
| LinuxLinux | Affected
| Fixed in– |
Description
In the Linux kernel, the following vulnerability has been resolved: ALSA: caiaq: take a reference on the USB device in create_card() The caiaq driver stores a pointer to the parent USB device in cdev->chip.dev but never takes a reference on it. The card's private_free callback, snd_usb_caiaq_card_free(), can run asynchronously via snd_card_free_when_closed() after the USB device has already been disconnected and freed, so any access to cdev->chip.dev in that path dereferences a freed usb_device. On top of the refcounting issue, the current card_free implementation calls usb_reset_device(cdev->chip.dev). A reset in a free callback is inappropriate: the device is going away, the call takes the device lock in a teardown context, and the reset races with the disconnect path that the callback is already cleaning up after. Take a reference on the USB device in create_card() with usb_get_dev(), drop it with usb_put_dev() in the free callback, and remove the usb_reset_device() call.
References
- git.kernel.org/stable/c/493b3a682ededc804555755f5d2193201339612d (opens in a new tab)
- git.kernel.org/stable/c/dbcf7588e8dea017ddb3f18ec2766f7d2e5f2a0e (opens in a new tab)
- git.kernel.org/stable/c/ac7345f68cda6989016d85d63f7b244c064aa8f6 (opens in a new tab)
- git.kernel.org/stable/c/f6634af5de728a46792f674a66d7843570cb68f7 (opens in a new tab)
- git.kernel.org/stable/c/1d9be95aee6c6246a21752e60c9519902649f482 (opens in a new tab)
- git.kernel.org/stable/c/6473ed16df1fe88051140611b3eb9a49be7f429e (opens in a new tab)
- git.kernel.org/stable/c/59b622a043cffc58b7638cd85ae6c30a0904f8e6 (opens in a new tab)
- git.kernel.org/stable/c/80bb50e2d459213cccff3111d5ef98ed4238c0d5 (opens in a new tab)