mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
ASoC: Intel: avs: Do not share the name pointer between components
By sharing 'name' directly, tearing down components may lead to
use-after-free errors. Duplicate the name to avoid that.
At the same time, update the order of operations - since commit
cee28113db ("ASoC: dmaengine_pcm: Allow passing component name via
config") the framework does not override component->name if set before
invoking the initializer.
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://patch.msgid.link/20250818104126.526442-4-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
df36e5c197
commit
4dee5c1cc4
|
|
@ -1390,16 +1390,18 @@ int avs_soc_component_register(struct device *dev, const char *name,
|
|||
if (!acomp)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = snd_soc_component_initialize(&acomp->base, drv, dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
acomp->base.name = devm_kstrdup(dev, name, GFP_KERNEL);
|
||||
if (!acomp->base.name)
|
||||
return -ENOMEM;
|
||||
|
||||
/* force name change after ASoC is done with its init */
|
||||
acomp->base.name = name;
|
||||
INIT_LIST_HEAD(&acomp->node);
|
||||
|
||||
drv->use_dai_pcm_id = !obsolete_card_names;
|
||||
|
||||
ret = snd_soc_component_initialize(&acomp->base, drv, dev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return snd_soc_add_component(&acomp->base, cpu_dais, num_cpu_dais);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user