CVE-2026-89890: media: go7007: defer the ALSA v4l2 put until card release
In the Linux kernel, the following vulnerability has been resolved:
media: go7007: defer the ALSA v4l2 put until card release
go7007sndinit() already takes a v4l2device reference for the ALSA side, but go7007sndremove() drops it immediately after calling sndcardfreewhenclosed().
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->privatedata and call go7007sndhwfree() after the V4L2 release path has freed the object.
Move the matching v4l2deviceput() to the ALSA card privatefree callback so the existing ALSA reference covers the whole deferred card lifetime.
Event History
Frequently Asked Questions
Who is exposed to this issue?
Systems using the Linux kernel go7007 media driver are exposed when the driver’s ALSA capture PCM interface is in use. The problematic condition requires a userspace process to keep a capture PCM file open while the associated V4L2 object is released.
What must happen for the use-after-free condition to be triggered?
A capture PCM must remain open after go7007_snd_remove() calls snd_card_free_when_closed(). The deferred ALSA PCM release path can then invoke go7007_snd_hw_free() through pcm->private_data after the V4L2 release path has freed the go7007 object.
What is the relevant mitigation if the fix cannot be applied immediately?
Ensure that userspace closes active go7007 capture PCM handles before removing or releasing the associated device. Avoid deferred ALSA card teardown while capture PCM users still have the device open.
How does the fix prevent the issue?
The fix retains the V4L2 device reference for the entire deferred ALSA card lifetime. It moves v4l2_device_put() into the ALSA card private_free callback, so the go7007 object remains valid until the last PCM file is closed.