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.
Published: 2026-05-01
Score: 7.0 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The ALSA caiaq driver in the Linux kernel fails to increment the reference count for the parent USB device, causing the card’s asynchronous free callback to access freed memory. The callback also attempts to reset the device during teardown, which can race with the disconnect process. This use‑after‑free vulnerability could allow a local attacker controlling a USB audio device to execute arbitrary code in kernel space, potentially escalating privileges.

Affected Systems

Linux kernels that include the ALSA caiaq driver are affected. No specific kernel versions are listed, so all current releases containing this driver are potentially vulnerable until the patch is included.

Risk and Exploitability

The vulnerability qualifies as a high‑severity use‑after‑free in the kernel, providing a locally exploitable path for privilege escalation. No EPSS score is available and the issue is not listed in the CISA KEV catalog. Exploitation would require a physical USB device and local attacker access, but once triggered, the impact could be complete system compromise. The CVSS score of 7.0 indicates a high severity.

Generated by OpenCVE AI on May 2, 2026 at 10:41 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update to a Linux kernel version that includes the firmware fix which adds usb_get_dev() in create_card(), usb_put_dev() in the free callback, and removes the usb_reset_device() call.
  • Rebuild or reload the ALSA caiaq driver after the kernel update to ensure the patched code is in use.
  • If an immediate kernel upgrade is not possible, disable the caiaq driver for unused USB audio devices by blacklisting the module to prevent the use‑after‑free from being triggered.

Generated by OpenCVE AI on May 2, 2026 at 10:41 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 02 May 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-825
References
Metrics threat_severity

None

cvssV3_1

{'score': 7.0, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H'}

threat_severity

Moderate


Fri, 01 May 2026 14:15:00 +0000

Type Values Removed Values Added
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.
Title ALSA: caiaq: take a reference on the USB device in create_card()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-05-01T13:56:00.869Z

Reserved: 2026-03-09T15:48:24.132Z

Link: CVE-2026-31701

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-05-01T14:16:20.020

Modified: 2026-05-01T15:24:14.893

Link: CVE-2026-31701

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-05-01T00:00:00Z

Links: CVE-2026-31701 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-05-01T19:45:23Z

Weaknesses