[PATCH] image: fit: Align hash output buffers
Simon Glass
sjg at chromium.org
Mon Mar 28 08:35:15 CEST 2022
On Thu, 24 Mar 2022 at 09:26, Sean Anderson <sean.anderson at seco.com> wrote:
>
> Hardware-accelerated hash functions require that the input and output
> buffers be aligned to the minimum DMA alignment. memalign.h helpfully
> provides a macro just for this purpose. It doesn't exist on the host,
> but we don't need to be aligned there either.
>
> Fixes: 5dfb521386 ("[new uImage] New uImage low-level API")
> Signed-off-by: Sean Anderson <sean.anderson at seco.com>
> ---
>
> boot/image-fit.c | 4 +++-
> tools/mkimage.h | 3 +++
> 2 files changed, 6 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass <sjg at chromium.org>
>
> diff --git a/boot/image-fit.c b/boot/image-fit.c
> index f01cafe4e2..6610035d0a 100644
> --- a/boot/image-fit.c
> +++ b/boot/image-fit.c
> @@ -24,6 +24,7 @@
> #include <mapmem.h>
> #include <asm/io.h>
> #include <malloc.h>
> +#include <memalign.h>
> #include <asm/global_data.h>
> #ifdef CONFIG_DM_HASH
> #include <dm.h>
> @@ -1263,7 +1264,8 @@ 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)
> {
> - uint8_t value[FIT_MAX_HASH_LEN];
> + DEFINE_ALIGN_BUFFER(uint8_t, value, FIT_MAX_HASH_LEN,
> + ARCH_DMA_MINALIGN);
> int value_len;
> const char *algo;
> uint8_t *fit_value;
> diff --git a/tools/mkimage.h b/tools/mkimage.h
> index 0d3148444c..7652c8b001 100644
> --- a/tools/mkimage.h
> +++ b/tools/mkimage.h
> @@ -41,6 +41,9 @@ 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 MKIMAGE_TMPFILE_SUFFIX ".tmp"
> #define MKIMAGE_MAX_TMPFILE_LEN 256
> #define MKIMAGE_DEFAULT_DTC_OPTIONS "-I dts -O dtb -p 500"
> --
> 2.25.1
>
More information about the U-Boot
mailing list