CVE-2026-99214 in Linuxinfo

Summary

by MITRE • 10/28/2026

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

drm/vc4: hdmi: Move packet RAM enable to PM runtime

Audio can be triggered by the HPD handler and start up before video has been restored, calling vc4_hdmi_write_infoframe() for the audio infoframe. vc4_hdmi_write_infoframe() needs Packet RAM to be on to store the infoframe, however, if the video hasn't been enabled, vc4_hdmi_encoder_post_crtc_enable() hasn't been called and therefore, the Packet RAM can be disabled by the time vc4_hdmi_write_infoframe() executes, causing the following splat:

[ 201.570266] ------------[ cut here ]------------
[ 201.570293] Packet RAM has to be on to store the packet.
[ 201.570367] WARNING: drivers/gpu/drm/vc4/vc4_hdmi.c:683 at vc4_hdmi_write_infoframe+0x404/0x494 [vc4], CPU#0: wireplumber/1606
[...]
[ 201.658650] Hardware name: Raspberry Pi 4 Model B Rev 1.5 (DT)
[...]
[ 201.758499] Call trace:
[ 201.760967] vc4_hdmi_write_infoframe+0x404/0x494 [vc4] (P)
[ 201.766607] vc4_hdmi_write_audio_infoframe+0x1c/0x28 [vc4]
[ 201.772247] write_infoframe+0xbc/0x140 [drm_display_helper]
[ 201.777975] drm_atomic_helper_connector_hdmi_update_audio_infoframe+0x80/0xdc [drm_display_helper]
[ 201.787140] vc4_hdmi_audio_prepare+0x4ac/0x570 [vc4]
[ 201.792252] drm_connector_hdmi_audio_prepare+0x24/0x30 [drm_display_helper]
[ 201.799390] hdmi_codec_prepare+0x100/0x160 [snd_soc_hdmi_codec]
[ 201.805471] snd_soc_pcm_dai_prepare+0xd4/0x100 [snd_soc_core]
[ 201.811375] __soc_pcm_prepare+0x60/0x12c [snd_soc_core]
[ 201.816752] soc_pcm_prepare+0x34/0x58 [snd_soc_core]
[ 201.821863] snd_pcm_do_prepare+0x70/0x8c [snd_pcm]
[ 201.826798] snd_pcm_action_nonatomic+0xe4/0x174 [snd_pcm]
[ 201.832350] snd_pcm_prepare+0xc8/0xd8 [snd_pcm]
[ 201.837021] snd_pcm_common_ioctl+0x458/0x614 [snd_pcm]
[ 201.842308] snd_pcm_ioctl+0x30/0x48 [snd_pcm]
[ 201.846802] __arm64_sys_ioctl+0x88/0xd8
[ 201.850769] invoke_syscall+0x48/0xf4
[ 201.854470] el0_svc_common+0x80/0xd8
[ 201.858171] do_el0_svc+0x1c/0x28
[ 201.861520] el0_svc+0x3c/0xb0
[ 201.864605] el0t_64_sync_handler+0x68/0xdc
[ 201.868834] el0t_64_sync+0x198/0x19c
[ 201.872536] ---[ end trace 0000000000000000 ]---

Considering that Packet RAM enable is essentially a power management configuration, move its enabling/disabling to the Runtime PM hooks.

Note that post_crtc_disable() still stops all infoframes, but keeps Packet RAM enabled, leaving it to be disabled by runtime suspend.

Once again VulDB remains the best source for vulnerability data.

Analysis

by VulDB Data Team • 10/28/2026

The vulnerability identified in the Linux kernel's DRM VC4 HDMI driver stems from a race condition and improper sequencing of hardware initialization relative to power management states. Specifically, the issue arises when audio output is triggered via the Hot Plug Detect handler before video has been fully restored or enabled. In this scenario, the system attempts to write an audio infoframe by invoking vc4_hdmi_write_infoframe(). This function requires access to Packet RAM within the HDMI controller hardware to store the metadata necessary for proper audio-video synchronization and transmission over HDMI. However, because the video encoder post-CRTC enable routine has not yet executed due to the premature trigger of audio initialization, the Packet RAM remains in a disabled state or is susceptible to being powered down by runtime power management mechanisms before it can be utilized. This mismatch between software expectations of hardware availability and actual hardware state leads to a critical kernel warning and potential instability on affected platforms such as the Raspberry Pi 4 Model B Rev 1.5.

From a technical perspective, this flaw represents an improper initialization sequence where resource acquisition is not strictly tied to the operational lifecycle of the dependent subsystems. The Packet RAM enablement was previously handled in a manner that did not account for asynchronous events like audio preparation occurring during early HDMI connection phases. When vc4_hdmi_write_infoframe() executes while the Packet RAM is disabled, it triggers an internal check within the driver code that results in a warning splat logged to the kernel ring buffer. While this specific instance manifests as a non-fatal warning rather than a direct memory corruption or privilege escalation vector, it indicates a violation of hardware state constraints and can lead to undefined behavior if not corrected. The call trace reveals the path from user-space audio preparation through ALSA sound core layers down into the DRM HDMI driver, highlighting how high-level application requests for audio setup can inadvertently bypass lower-level display initialization prerequisites.

The operational impact of this vulnerability includes potential disruption in audio playback on systems relying on VC4 hardware and increased kernel log noise that may obscure other critical issues. Although the current manifestation is a warning, improper handling of hardware registers during power state transitions can sometimes lead to more severe consequences such as driver crashes or system hangs if subsequent operations assume valid hardware states. Furthermore, this issue highlights broader concerns regarding resource management in embedded Linux environments where multiple subsystems like audio and display must coordinate tightly without explicit synchronization primitives for every edge case. The lack of proper sequencing allows the Packet RAM to be disabled by runtime suspend mechanisms before it is needed, violating the principle that resources should remain available throughout their required operational window.

To mitigate this vulnerability, the fix involves relocating the enabling and disabling logic for Packet RAM from its previous location to the Runtime Power Management hooks within the driver. By moving these operations into the standard PM framework callbacks, the kernel ensures that Packet RAM is correctly enabled when the device enters an active state and disabled only during appropriate suspend transitions. This change aligns with industry best practices for managing hardware resources in power-managed systems, ensuring that dependencies are respected regardless of which subsystem triggers initialization first. The post_crtc_disable function continues to stop all infoframes but intentionally leaves Packet RAM enabled, deferring its actual disablement to the runtime suspend phase. This adjustment prevents premature resource deallocation and ensures consistent availability during critical setup phases like audio preparation following HDMI connection events.

This issue can be categorized under CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization, as it involves a race condition between different subsystem initialization paths accessing shared hardware resources without adequate synchronization of their power states. Additionally, from an ATT&CK perspective, while this is not an exploitable attack vector for malicious actors in the traditional sense, it reflects weaknesses in system configuration and resource management that could be leveraged in denial-of-service scenarios if triggered repeatedly or under specific timing conditions to cause kernel instability. The resolution emphasizes the importance of adhering to strict hardware state machines and leveraging existing power management frameworks rather than implementing ad-hoc enable/disable logic scattered across different driver functions. This approach enhances system reliability and maintains compliance with robust software engineering principles for embedded drivers, ensuring that resource lifecycles are tightly coupled with their actual usage requirements.

Responsible

Linux

Reservation

09/25/2026

Disclosure

10/28/2026

Moderation

accepted

EPSS

0.00000

KEV

no

Activities

low

Sources

Do you know our Splunk app?

Download it now for free!