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: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
@@ -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,
|
|||||||
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
|
||||||
|
Reference in New Issue
Block a user