ASoC: core: Make snd_soc_find_component() more robust
authorMark Brown <broonie@kernel.org>
Mon, 14 Jan 2019 23:29:36 +0000 (23:29 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 15 Jan 2019 00:07:00 +0000 (00:07 +0000)
There are some use cases where you're checking for a lot of things on a
card and it makes sense that you might end up trying to call
snd_soc_find_component() without either a name or an of_node.  Currently
in that case we try to dereference the name and crash but it's more
useful to allow the caller to just treat that as a case where we don't
find anything, that error handling will already exist.

Inspired by a patch from Ajit Pandey fixing some callers.

Fixes: 8780cf1142a5 ("ASoC: soc-core: defer card probe until all component is added to list")
Reported-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-core.c

index cdcc417c94ca165c0029166b82a157c5a70b6030..b680c673c5538345405d65977a260a05362774dc 100644 (file)
@@ -742,7 +742,7 @@ static struct snd_soc_component *soc_find_component(
                if (of_node) {
                        if (component->dev->of_node == of_node)
                                return component;
-               } else if (strcmp(component->name, name) == 0) {
+               } else if (name && strcmp(component->name, name) == 0) {
                        return component;
                }
        }