CVE-2026-89890 PUBLISHED

media: go7007: defer the ALSA v4l2 put until card release

Assigner: Linux
Reserved: 11.09.2026 Published: 16.09.2026 Updated: 16.09.2026

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

media: go7007: defer the ALSA v4l2 put until card release

go7007_snd_init() already takes a v4l2_device reference for the ALSA side, but go7007_snd_remove() drops it immediately after calling snd_card_free_when_closed().

That is too early when a userspace process still has the capture PCM open. The ALSA card and its PCM callbacks remain alive until the last file is closed, so the release path can still reach struct go7007 through pcm->private_data and call go7007_snd_hw_free() after the V4L2 release path has freed the object.

Move the matching v4l2_device_put() to the ALSA card private_free callback so the existing ALSA reference covers the whole deferred card lifetime.

Metrics

CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS Score: 7.8

AV:L - The UAF is reached locally by holding the go7007 ALSA capture PCM open, forcing go7007_usb_disconnect() via USBDEVFS_DISCONNECT or sysfs unbind, then closing the PCM; there is no network path. Physical unplug is only an extra path, matching USB disconnect UAF scores (CVE-2026-80971, CVE-2025-40283). AC:L - The attacker fully controls the sequence: open the capture PCM, disconnect the already-bound device, then close. go7007_snd_remove() drops the ALSA v4l2 ref before snd_card_free_when_closed() finishes, so close deterministically hits hw_free/capture_close on the freed go7007 with no attacker-uncontrollable race. PR:L - Opening /dev/snd/pcmCDc has no capability check (audio group or seat/udev ACL), and USBDEVFS_DISCONNECT has no capable() gate, only write access to /dev/bus/usb that plugdev/uaccess grants seat users. Init-namespace root is not required. UI:N - The attacker performs PCM open, disconnect, and close on their own fds against an already-attached go7007 capture device (kiosk, industrial encoder, or shared workstation). No separate victim action such as plugging a cable or mounting a filesystem is required. S:U - The slab use-after-free of struct go7007 and the later ALSA PCM/card teardown run entirely in the host kernel. This is ordinary local privilege escalation, not a VM, IOMMU, or sandbox boundary escape. C:H - Per kernel UAF guidance confidentiality is High. After kfree(go), PCM close reads the dangling object (snd_pcm_substream_chip → go->snd_context and related fields); reclaiming that slab lets the attacker supply pointer-rich state and obtain a kernel disclosure primitive. I:H - go7007_snd_hw_free() writes audio_deliver on the freed go7007, capture_close() writes through go->snd_context, and go7007_snd_free() kfree()s that pointer. A reclaimed object yields write-after-free and arbitrary-free primitives suitable for control-flow hijack. A:H - Dereferencing the freed go7007 in PCM close/hw_free, and kfree of snd_context during deferred card free, reliably oopses or panics the kernel. The attacker can repeat disconnect/close to crash on demand, so availability impact is High.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from d5d3a7cc127d096c22ad63c4ff72970e1beb22ef to 1c57d1a3396b2d767d58f10dff09bb397586c714 (excl.)
  • affected from d5d3a7cc127d096c22ad63c4ff72970e1beb22ef to 9c4f9628b8558c87903492a777834cc5be14ded3 (excl.)
  • affected from d5d3a7cc127d096c22ad63c4ff72970e1beb22ef to b7a0de398ad510426db9c8e96c516ef7abf48b0e (excl.)
  • affected from d5d3a7cc127d096c22ad63c4ff72970e1beb22ef to 1c9fdd9465211432d5c0ff70caaec0be245823d5 (excl.)
  • affected from d5d3a7cc127d096c22ad63c4ff72970e1beb22ef to 29fe4d38fb59ec28ca656cb2dabc2b0f78e78980 (excl.)
  • affected from d5d3a7cc127d096c22ad63c4ff72970e1beb22ef to 0745a59945d927652d892437f9647ed6e87c0677 (excl.)
  • affected from d5d3a7cc127d096c22ad63c4ff72970e1beb22ef to e6f1a1ac9b8ccabfec548aef0d0d93eaf4dba4f4 (excl.)
  • affected from d5d3a7cc127d096c22ad63c4ff72970e1beb22ef to 1bd456afeb8a515137e567967069fce6f8fcd23e (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 3.10 is affected
  • unaffected from 0 to 3.10 (excl.)
  • unaffected from 5.10.270 to 5.10.* (incl.)
  • unaffected from 5.15.221 to 5.15.* (incl.)
  • unaffected from 6.1.188 to 6.1.* (incl.)
  • unaffected from 6.6.157 to 6.6.* (incl.)
  • unaffected from 6.12.110 to 6.12.* (incl.)
  • unaffected from 6.18.51 to 6.18.* (incl.)
  • unaffected from 7.2.5 to 7.2.* (incl.)
  • unaffected from 7.3-rc1 to * (incl.)

References