diff options
author | Liam Girdwood <liam.r.girdwood@linux.intel.com> | 2017-06-06 17:45:09 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2017-06-07 22:05:40 +0300 |
commit | c3421a6a65abc636b067eb15a4c5e9cb59e91c95 (patch) | |
tree | ec50c022c5d5f32848a5883fb1a125633678120f /sound/soc/soc-topology.c | |
parent | cc9d4714a8da98f905c63d74e9897fc6f4563fca (diff) | |
download | linux-c3421a6a65abc636b067eb15a4c5e9cb59e91c95.tar.xz |
ASoC: topology: Dont free template strings whilst they are in use.
Template name pointers are copied when creating new widgets and are freed
in widget destroy.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/soc-topology.c')
-rw-r--r-- | sound/soc/soc-topology.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c index f24d1f2e82a0..7006cf3007b5 100644 --- a/sound/soc/soc-topology.c +++ b/sound/soc/soc-topology.c @@ -1477,6 +1477,7 @@ static int soc_tplg_dapm_widget_create(struct soc_tplg *tplg, if (template.id < 0) return template.id; + /* strings are allocated here, but used and freed by the widget */ template.name = kstrdup(w->name, GFP_KERNEL); if (!template.name) return -ENOMEM; @@ -1589,8 +1590,6 @@ widget: widget->dobj.widget.kcontrol_type = kcontrol_type; widget->dobj.ops = tplg->ops; widget->dobj.index = tplg->index; - kfree(template.sname); - kfree(template.name); list_add(&widget->dobj.list, &tplg->comp->dobj_list); ret = soc_tplg_widget_ready(tplg, widget, w); |