diff options
| author | Richard Fitzgerald <rf@opensource.cirrus.com> | 2026-06-04 11:12:44 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-06-08 18:50:30 +0100 |
| commit | 7d3fb78b550301e43fdc60312aed733069694426 (patch) | |
| tree | e80c3530ca34b55ea45f87bfe0e1f1ab9007a67b /arch/nds32/kernel/git@git.tavy.me:linux.git | |
| parent | d2dcd85f9e09fe3566d4cdcd357856a42ac73f93 (diff) | |
ASoC: wm_adsp: Fix NULL dereference when removing firmware controls
In wm_adsp_control_remove() check that the priv pointer is not NULL
before attempting to cleanup what it points to.
When cs_dsp creates a control it calls wm_adsp_control_add_cb() so that
wm_adsp can create its own private control data. There are two cases
where private data is not created:
1. The control is a SYSTEM control, so an ALSA control is not created.
2. The codec driver has registered a control_add() callback that
hides the control, so wm_adsp_control_add() is not called.
When cs_dsp_remove destroys its control list it calls
wm_adsp_control_remove() for each control. But wm_adsp_control_remove()
was attempting to cleanup the private data pointed to by cs_ctl->priv
without checking the pointer for NULL.
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Fixes: 0700bc2fb94c ("ASoC: wm_adsp: Separate generic cs_dsp_coeff_ctl handling")
Link: https://patch.msgid.link/20260604101244.1402862-1-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'arch/nds32/kernel/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions
