diff options
author | Mark Brown <broonie@kernel.org> | 2025-08-25 21:16:07 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2025-08-25 21:16:07 +0100 |
commit | ebba78e34d47d7866bf62c3970487651797ae20d (patch) | |
tree | 6a7ff78ecbf8064477c25ec2ee9a54effa90e6ee | |
parent | b1c99d5bd24ce0a1193d8476d83bf8c8bc633266 (diff) | |
parent | b833b412a522e58b790abe79b6ec46e8ba1f312a (diff) |
ASoC: fixup snd_soc_lookup_component_nolocked()
Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
Because snd_dmaengine_pcm is sharing same dev with CPU and Platform,
snd_soc_lookup_component_nolocked() might be call with NULL driver name
(= CPU). This patch fixup and cleanup it.
-rw-r--r-- | sound/soc/soc-core.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 37bc5867f81d..cc9125ffe92a 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -369,20 +369,25 @@ struct snd_soc_component *snd_soc_lookup_component_nolocked(struct device *dev, const char *driver_name) { struct snd_soc_component *component; - struct snd_soc_component *found_component; - found_component = NULL; for_each_component(component) { - if ((dev == component->dev) && - (!driver_name || - (driver_name == component->driver->name) || - (strcmp(component->driver->name, driver_name) == 0))) { - found_component = component; - break; - } + if (dev != component->dev) + continue; + + if (!driver_name) + return component; + + if (!component->driver->name) + continue; + + if (component->driver->name == driver_name) + return component; + + if (strcmp(component->driver->name, driver_name) == 0) + return component; } - return found_component; + return NULL; } EXPORT_SYMBOL_GPL(snd_soc_lookup_component_nolocked); |