[PATCH] image: fit: Align hash output buffers

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@seco.com ---
boot/image-fit.c | 4 +++- tools/mkimage.h | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-)
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"

On Thu, 24 Mar 2022 at 09:26, Sean Anderson sean.anderson@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@seco.com
boot/image-fit.c | 4 +++- tools/mkimage.h | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@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

On Thu, Mar 24, 2022 at 11:26:11AM -0400, Sean Anderson 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@seco.com Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/master, thanks!
participants (3)
-
Sean Anderson
-
Simon Glass
-
Tom Rini