aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/soc-topology.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2019-02-06 17:31:39 +0000
committerMark Brown <broonie@kernel.org>2019-02-06 17:31:39 +0000
commite29fe437ea5d926ea23d806b2468bf60ee8dc08a (patch)
tree958f74204fc7b15fb7a572c356bc15ac7384be01 /sound/soc/soc-topology.c
parentASoC: ssm2602: switch to SPDX identifier (diff)
parentASoC: dapm: fix out-of-bounds accesses to DAPM lookup tables (diff)
downloadlinux-dev-e29fe437ea5d926ea23d806b2468bf60ee8dc08a.tar.xz
linux-dev-e29fe437ea5d926ea23d806b2468bf60ee8dc08a.zip
Merge branch 'asoc-5.0' into asoc-5.1 for dapm table
Diffstat (limited to 'sound/soc/soc-topology.c')
-rw-r--r--sound/soc/soc-topology.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c
index 246d2a2d43c8..c5638e15a2dd 100644
--- a/sound/soc/soc-topology.c
+++ b/sound/soc/soc-topology.c
@@ -523,6 +523,7 @@ static void remove_dai(struct snd_soc_component *comp,
{
struct snd_soc_dai_driver *dai_drv =
container_of(dobj, struct snd_soc_dai_driver, dobj);
+ struct snd_soc_dai *dai;
if (pass != SOC_TPLG_PASS_PCM_DAI)
return;
@@ -530,6 +531,10 @@ static void remove_dai(struct snd_soc_component *comp,
if (dobj->ops && dobj->ops->dai_unload)
dobj->ops->dai_unload(comp, dobj);
+ list_for_each_entry(dai, &comp->dai_list, list)
+ if (dai->driver == dai_drv)
+ dai->driver = NULL;
+
kfree(dai_drv->name);
list_del(&dobj->list);
kfree(dai_drv);