summaryrefslogtreecommitdiff
path: root/sound/soc/soc-topology.c
diff options
context:
space:
mode:
authorJyri Sarha <jsarha@ti.com>2015-11-10 19:12:42 +0300
committerMark Brown <broonie@kernel.org>2015-11-10 21:52:06 +0300
commitfd589a1be20fdd76ef97700dd0185e7a060546dc (patch)
tree93a642eaf9fd2868431a06da7556d2e87b831762 /sound/soc/soc-topology.c
parentbb9a13a0209c56cdf27d125a1f2f6f34378c64f4 (diff)
downloadlinux-fd589a1be20fdd76ef97700dd0185e7a060546dc.tar.xz
ASoC: dapm: Reset dapm wcache after freeing damp widgets
If there is anything in damp->path_source_cache or damp->path_sink_cache, it can not be valid after the widgets have been freed. Without this patch a repeated remove and load of a machine driver may cause NULL pointer reference in dapm_wcache_lookup() when a freed widget, not belonging to any list, is haunting in the wcache. Signed-off-by: Jyri Sarha <jsarha@ti.com> Reported-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/soc-topology.c')
-rw-r--r--sound/soc/soc-topology.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c
index 8d7ec80af51b..cce63fe65dd9 100644
--- a/sound/soc/soc-topology.c
+++ b/sound/soc/soc-topology.c
@@ -1805,6 +1805,7 @@ void snd_soc_tplg_widget_remove_all(struct snd_soc_dapm_context *dapm,
snd_soc_tplg_widget_remove(w);
snd_soc_dapm_free_widget(w);
}
+ snd_soc_dapm_reset_cache(dapm);
}
EXPORT_SYMBOL_GPL(snd_soc_tplg_widget_remove_all);