ASoC: topology: Dont free template strings whilst they are in use.
authorLiam Girdwood <liam.r.girdwood@linux.intel.com>
Tue, 6 Jun 2017 14:45:09 +0000 (15:45 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 7 Jun 2017 19:05:40 +0000 (20:05 +0100)
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>
sound/soc/soc-topology.c

index f24d1f2e82a087fb9d549f79036d042669aa7150..7006cf3007b550368ace7ec97b5d8b179bd29830 100644 (file)
@@ -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);