CVE-2026-80525: ASoC: SOF: ipc4-topology: Refresh copier IPC payload before widget setup
In the Linux kernel, the following vulnerability has been resolved:
ASoC: SOF: ipc4-topology: Refresh copier IPC payload before widget setup
The ipcconfigdata buffer for copier widgets is built once during ipcprepare (called from sofpcmsetupconnectedwidgets) and cached for reuse. For host copiers this buffer contains the copierdata with gtwcfg.nodeid (host DMA ID). For DAI copiers it additionally includes a dmaconfigtlv trailer with streamid and dmachannelid for HDA link DMA.
On suspend/resume, both host and link DMA streams are released and re-allocated with potentially different stream tags. The underlying copierdata and dmaconfigtlv structures are correctly updated by hostconfig and sdwhdadaihwparams respectively. However, since the widget list (spcm->stream[].list) persists across suspend, sofpcmhwparams skips sofpcmsetupconnectedwidgets and ipcprepare never runs again to rebuild ipcconfigdata. The stale cached payload is then sent to firmware with boot-time DMA channel assignments, causing DMA channel conflicts that lead to firmware errors and crashes.
Fix this by refreshing copierdata and dmaconfigtlv portions of ipcconfigdata in sofipc4widgetsetup right before the IPC message is sent. This ensures the payload always reflects the current DMA state regardless of whether ipcprepare ran.
For DAI copiers, the gtwcfg.configlength in copierdata is temporarily inflated to include the TLV size (matching the ipcconfigdata layout) before copying, then restored, mirroring what sofipc4preparecopiermodule does when first building the buffer.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1 - Compensating control
In sof_ipc4_widget_setup, refresh the copier_data and dma_config_tlv portions of ipc_config_data immediately before sending the IPC message. For DAI copiers, include the dma_config_tlv trailer with stream_id and dma_channel_id for HDA link DMA, temporarily inflate gtw_cfg.config_length to include the TLV size while copying, then restore it; ensure host copier_data uses the current gtw_cfg.node_id host DMA ID.
Event History
Frequently Asked Questions
What systems are most likely to encounter this issue?
Systems using the Linux kernel's ASoC SOF IPC4 topology with copier widgets are relevant. The failure path involves both host copiers and DAI copiers, particularly where host or HDA link DMA streams are released and reallocated across suspend/resume.
What event triggers the failure?
The issue can occur after suspend and resume when DMA streams receive different stream tags or channel assignments. The persisted widget list causes the kernel to reuse a cached copier IPC payload containing the boot-time assignments instead of rebuilding it.
How would an administrator recognize that the system is affected?
Affected systems may show firmware errors or firmware crashes after resume. The immediate cause is stale copier payload data being sent with outdated DMA channel assignments, which can create DMA channel conflicts.