Skip to content

ipc: use-after-free fixes#10917

Open
abonislawski wants to merge 2 commits into
thesofproject:mainfrom
abonislawski:fix/chain-dma-delete
Open

ipc: use-after-free fixes#10917
abonislawski wants to merge 2 commits into
thesofproject:mainfrom
abonislawski:fix/chain-dma-delete

Conversation

@abonislawski

Copy link
Copy Markdown
Member

No description provided.

When ipc4_chain_dma_state() fails for a freshly created chain DMA
unlink and free the ipc_comp_dev as well, not just the comp_dev

Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
ipc_comp_free() freed a component that a completed pipeline
still referenced via source_comp/sink_comp/sched_comp,
so a later SET_PIPELINE_STATE dereferenced the freed comp_dev.
Clear those references on free and bail out of
pipeline_get_host_dev() when an endpoint is gone.

Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
Copilot AI review requested due to automatic review settings June 15, 2026 11:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Fixes IPC4 pipeline-related use-after-free scenarios by clearing stale component pointers and freeing intermediate structures during error paths.

Changes:

  • Add a NULL-guard in pipeline_get_host_dev() to avoid dereferencing freed pipeline comps.
  • On chain-DMA setup failure, remove and free cdma_comp list nodes to prevent later UAF/leaks.
  • When freeing a component, clear any pipeline source_comp/sink_comp/sched_comp raw pointers referencing it.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
src/ipc/ipc4/handler-user.c Adds pipeline component NULL-guard and frees/removes chain-DMA list nodes on error.
src/ipc/ipc-helper.c Clears raw component pointers stored in pipeline structs when components are freed.

Comment thread src/ipc/ipc4/handler-user.c
Comment thread src/ipc/ipc-helper.c
Comment thread src/ipc/ipc-helper.c

@jsarha jsarha left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants