[alsa-devel] [PATCH] ASoC: Intel: skl_hda_dsp_common: Fix global-out-of-bounds bug
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Wed Jan 22 22:54:56 CET 2020
>> Kai and Ranjani, do you think this impacts SOF as well? Or does our BE
>> override somehow suppresses the problem?
>>
> Hi Pierre/Cezary,
>
> SOF does have the same problem too but I thought we're allowed to have dai
> links without platform component? An alternative to adding the platform
> component would be to do something like below.
>
> Thanks,
> Ranjani
> diff --git a/sound/soc/intel/boards/skl_hda_dsp_generic.c
> b/sound/soc/intel/boards/skl_hda_dsp_generic.c
> index 11eaee9ae41f..dacf8014b870 100644
> --- a/sound/soc/intel/boards/skl_hda_dsp_generic.c
> +++ b/sound/soc/intel/boards/skl_hda_dsp_generic.c
> @@ -112,6 +112,7 @@ static char hda_soc_components[30];
>
> static int skl_hda_fill_card_info(struct snd_soc_acpi_mach_params
> *mach_params)
> {
> + struct snd_soc_dai_link_component *platform;
> struct snd_soc_card *card = &hda_soc_card;
> struct snd_soc_dai_link *dai_link;
> u32 codec_count, codec_mask;
> @@ -148,7 +149,8 @@ static int skl_hda_fill_card_info(struct
> snd_soc_acpi_mach_params *mach_params)
> card->num_dapm_routes = num_route;
>
> for_each_card_prelinks(card, i, dai_link)
> - dai_link->platforms->name = mach_params->platform;
> + for_each_link_platforms(dai_link, i, platform)
> + platform->name = mach_params->platform;
we already do this indirectly with:
skl_hda_add_dai_link(struct snd_soc_card *card, struct snd_soc_dai_link
*link)
{
link->platforms->name = ctx->platform_name; <<<
I suspect the issue is that the plaforms part is not allocated. The
8-byte out of bounds is not a string, it looks like a pointer stored in
the wrong location.
More information about the Alsa-devel
mailing list