Skip to content

Commit

Permalink
ASoC: topology: free created components in tplg load error
Browse files Browse the repository at this point in the history
Topology resources are no longer needed if any element failed to load.

Signed-off-by: Bard liao <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
  • Loading branch information
bardliao authored and broonie committed Feb 18, 2019
1 parent 323fb7b commit 304017d
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion sound/soc/soc-topology.c
Original file line number Diff line number Diff line change
Expand Up @@ -2487,6 +2487,7 @@ int snd_soc_tplg_component_load(struct snd_soc_component *comp,
struct snd_soc_tplg_ops *ops, const struct firmware *fw, u32 id)
{
struct soc_tplg tplg;
int ret;

/* setup parsing context */
memset(&tplg, 0, sizeof(tplg));
Expand All @@ -2500,7 +2501,12 @@ int snd_soc_tplg_component_load(struct snd_soc_component *comp,
tplg.bytes_ext_ops = ops->bytes_ext_ops;
tplg.bytes_ext_ops_count = ops->bytes_ext_ops_count;

return soc_tplg_load(&tplg);
ret = soc_tplg_load(&tplg);
/* free the created components if fail to load topology */
if (ret)
snd_soc_tplg_component_remove(comp, SND_SOC_TPLG_INDEX_ALL);

return ret;
}
EXPORT_SYMBOL_GPL(snd_soc_tplg_component_load);

Expand Down

0 comments on commit 304017d

Please sign in to comment.