On 12/20/2018 11:07 PM, 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.
s/bounce/bounds ?
- Alignment of block->size;
For some non-x86 platforms, the access to an unaligned address might
be illegal.
Maybe I am missing something but I don't see any sort of explicit
restriction on alignment in the SOF tools. it looks implicit based on
address offsets and bases.
Maybe get_unaligned() is good enough to avoid unaligned access?
Liam, do you see any negative side effects if we enforce a 32-bit
alignment for all blocks (which essentially means all block sizes are
multiple of 4)? we can try and experiment but it's better if we have
an agreement on the design.
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel