summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Bara <benjamin.bara@skidata.com>2024-10-08 13:36:14 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-11-01 02:02:43 +0100
commit0fb250d3fc91a0a69fda83567e9a5da1a3cc9ae6 (patch)
tree1544ee4070cc2bf5072300a864bfe283cb0b6522
parentffde762202bf4c8b5945adb8e1c9607f568d3268 (diff)
ASoC: dapm: avoid container_of() to get component
commit 3fe9f5882cf71573516749b0bb687ef88f470d1d upstream. The current implementation does not work for widgets of DAPMs without component, as snd_soc_dapm_to_component() requires it. If the widget is directly owned by the card, e.g. as it is the case for the tegra implementation, the call leads to UB. Therefore directly access the component of the widget's DAPM to be able to check if a component is available. Fixes: f82eb06a40c8 ("ASoC: tegra: machine: Handle component name prefix") Cc: stable@vger.kernel.org # v6.7+ Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com> Link: https://patch.msgid.link/20241008-tegra-dapm-v2-1-5e999cb5f0e7@skidata.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--sound/soc/soc-dapm.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 32c556c625577..e39df5d10b07d 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -2786,10 +2786,10 @@ EXPORT_SYMBOL_GPL(snd_soc_dapm_update_dai);
int snd_soc_dapm_widget_name_cmp(struct snd_soc_dapm_widget *widget, const char *s)
{
- struct snd_soc_component *component = snd_soc_dapm_to_component(widget->dapm);
+ struct snd_soc_component *component = widget->dapm->component;
const char *wname = widget->name;
- if (component->name_prefix)
+ if (component && component->name_prefix)
wname += strlen(component->name_prefix) + 1; /* plus space */
return strcmp(wname, s);