[alsa-devel] [PATCH v3 09/14] ASoC: SOF: Add firmware, loader support

Takashi Iwai tiwai at suse.de
Thu Dec 20 09:16:16 CET 2018


On Thu, 20 Dec 2018 03:11:55 +0100,
Bard liao wrote:
> 
> 
> > Date: Wed, 12 Dec 2018 12:23:33 +0100
> > From: Takashi Iwai <tiwai at suse.de>
> > To: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
> > Cc: alsa-devel at alsa-project.org, andriy.shevchenko at intel.com, Daniel
> > 	Baluta <daniel.baluta at gmail.com>, liam.r.girdwood at linux.intel.com,
> > 	vkoul at kernel.org, broonie at kernel.org, Alan Cox <alan at linux.intel.com>,
> > 	sound-open-firmware at alsa-project.org
> > Subject: Re: [alsa-devel] [PATCH v3 09/14] ASoC: SOF: Add firmware
> > 	loader	support
> > Message-ID: <s5htvjjj8ei.wl-tiwai at suse.de>
> > Content-Type: text/plain; charset=US-ASCII
> >
> > On Tue, 11 Dec 2018 22:23:13 +0100,
> > Pierre-Louis Bossart wrote:
> >
> >> +
> >> +		snd_sof_dsp_block_write(sdev, offset,
> >> +					(void *)block + sizeof(*block),
> >> +					block->size);
> >> +
> >> +		/* next block */
> >> +		block = (void *)block + sizeof(*block) + block->size;
> > This may lead to an unaligned access.
> 
> Did you mean we should double check the block->size to
> prevent access to an invalid address?

You need two types of checks for the given data:
- The bounce check of block->size;
  We need to avoid out-of-bounce access.

- Alignment of block->size;
  For some non-x86 platforms, the access to an unaligned address might
  be illegal.

Oh, and recently another thing is sometimes needed for avoiding
Spectre.  This can be covered by array_index_nospec().


> > Also how is the endianess guaranteed?
> 
> Did you mean we should guarantee the driver can work no
> matter what kernel's endianess is?
> ie. Use le32_to_cpu() to handle it?

Depends on the implementation.  IIRC, topology API refuses the data
in a different endianess by checking the magic number at beginning.


thanks,

Takashi


More information about the Alsa-devel mailing list