Commit 88e8b9a8 authored by Mark Brown's avatar Mark Brown

ASoC: Check for a CODEC before dereferencing in DAPM

A CODEC pointer is optional (and is checked for in most contexts within
DAPM) - add checks to the few places where it was missed.
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
parent 12ea2c78
...@@ -1517,7 +1517,7 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm, ...@@ -1517,7 +1517,7 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm,
char prefixed_source[80]; char prefixed_source[80];
int ret = 0; int ret = 0;
if (dapm->codec->name_prefix) { if (dapm->codec && dapm->codec->name_prefix) {
snprintf(prefixed_sink, sizeof(prefixed_sink), "%s %s", snprintf(prefixed_sink, sizeof(prefixed_sink), "%s %s",
dapm->codec->name_prefix, route->sink); dapm->codec->name_prefix, route->sink);
sink = prefixed_sink; sink = prefixed_sink;
...@@ -2167,14 +2167,14 @@ int snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm, ...@@ -2167,14 +2167,14 @@ int snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm,
return -ENOMEM; return -ENOMEM;
name_len = strlen(widget->name) + 1; name_len = strlen(widget->name) + 1;
if (dapm->codec->name_prefix) if (dapm->codec && dapm->codec->name_prefix)
name_len += 1 + strlen(dapm->codec->name_prefix); name_len += 1 + strlen(dapm->codec->name_prefix);
w->name = kmalloc(name_len, GFP_KERNEL); w->name = kmalloc(name_len, GFP_KERNEL);
if (w->name == NULL) { if (w->name == NULL) {
kfree(w); kfree(w);
return -ENOMEM; return -ENOMEM;
} }
if (dapm->codec->name_prefix) if (dapm->codec && dapm->codec->name_prefix)
snprintf(w->name, name_len, "%s %s", snprintf(w->name, name_len, "%s %s",
dapm->codec->name_prefix, widget->name); dapm->codec->name_prefix, widget->name);
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment