On 6/20/22 3:01 AM, Joel Stanley wrote:
> The documentation above the DEFINE_ALIGN_BUFFER says it's for use
> outside functions, but we're inside one.
> 
> Instead use ALLOC_CACHE_ALIGN_BUFFER, the stack based macro, which also
> includes the cache alignment.
> 
> Fixes: b583348ca8c8 ("image: fit: Align hash output buffers")
> Signed-off-by: Joel Stanley <j...@jms.id.au>
> ---
> This fixes booting the ast2600-evb image in qemu, which was getting all
> zeroes for the output of the FIT hash check.
> 
> The 'static' buffer was in BSS but the output image didn't contain a BSS
> section. The pointer was left pointing to the text, so the code was
> trying to write to the (read only?) text area in SPI NOR memory space.
> 
>  tools/mkimage.h  | 3 +--
>  boot/image-fit.c | 3 +--
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/mkimage.h b/tools/mkimage.h
> index 7652c8b001c3..f5ca65e2edfd 100644
> --- a/tools/mkimage.h
> +++ b/tools/mkimage.h
> @@ -41,8 +41,7 @@ static inline ulong map_to_sysmem(void *ptr)
>       return (ulong)(uintptr_t)ptr;
>  }
>  
> -#define ARCH_DMA_MINALIGN 1
> -#define DEFINE_ALIGN_BUFFER(type, name, size, alugn) type name[size]
> +#define ALLOC_CACHE_ALIGN_BUFFER(type, name, size) type name[size]
>  
>  #define MKIMAGE_TMPFILE_SUFFIX               ".tmp"
>  #define MKIMAGE_MAX_TMPFILE_LEN              256
> diff --git a/boot/image-fit.c b/boot/image-fit.c
> index f57d97f55229..df3e5df8836a 100644
> --- a/boot/image-fit.c
> +++ b/boot/image-fit.c
> @@ -1264,8 +1264,7 @@ int calculate_hash(const void *data, int data_len, 
> const char *name,
>  static int fit_image_check_hash(const void *fit, int noffset, const void 
> *data,
>                               size_t size, char **err_msgp)
>  {
> -     DEFINE_ALIGN_BUFFER(uint8_t, value, FIT_MAX_HASH_LEN,
> -                         ARCH_DMA_MINALIGN);
> +     ALLOC_CACHE_ALIGN_BUFFER(uint8_t, value, FIT_MAX_HASH_LEN);
>       int value_len;
>       const char *algo;
>       uint8_t *fit_value;
> 

Reviewed-by: Sean Anderson <sean.ander...@seco.com>

Reply via email to