From: Tom Rini Date: Tue, 2 Dec 2025 21:20:33 +0000 (-0600) Subject: boot/image-fit.c: Use aligned_alloc(...) not memalign(...) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=abd6e0f252ee17b18e98be69d87aaca6a26e8336;p=thirdparty%2Fu-boot.git boot/image-fit.c: Use aligned_alloc(...) not memalign(...) With the changes in commit 8fbcc0e0e839 ("boot: Assure FDT is always at 8-byte aligned address") to call memalign(...) we now always call memalign(...) rather than malloc(...) when allocating a buffer that may contain a device tree. However, memalign(...) is not portable among all of the host OSes we support. The C11 standard does require that aligned_alloc(...) exist and it takes the same parameters as memalign(...) does. Change this file to call aligned_alloc rather than memalign, and for the non-USE_HOSTCC case define that function back to memalign. Fixes: 8fbcc0e0e839 ("boot: Assure FDT is always at 8-byte aligned address") Suggested-by: Heinrich Schuchardt Signed-off-by: Tom Rini --- diff --git a/boot/image-fit.c b/boot/image-fit.c index cccaa48f683..fce3a320eac 100644 --- a/boot/image-fit.c +++ b/boot/image-fit.c @@ -16,6 +16,9 @@ #include #include #include + +/* C11 standard function for aligned allocations */ +extern void *aligned_alloc(size_t alignment, size_t size); #else #include #include @@ -23,19 +26,21 @@ #include #include #include +#include #include #include #ifdef CONFIG_DM_HASH #include #include #endif +#define aligned_alloc(a, s) memalign((a), (s)) + DECLARE_GLOBAL_DATA_PTR; #endif /* !USE_HOSTCC*/ #include #include #include -#include #include #include @@ -2279,7 +2284,7 @@ int fit_image_load(struct bootm_headers *images, ulong addr, log_debug("decompressing image\n"); if (load == data) { - loadbuf = memalign(8, max_decomp_len); + loadbuf = aligned_alloc(8, max_decomp_len); load = map_to_sysmem(loadbuf); } else { loadbuf = map_sysmem(load, max_decomp_len); @@ -2293,7 +2298,7 @@ int fit_image_load(struct bootm_headers *images, ulong addr, len = load_end - load; } else if (load_op != FIT_LOAD_IGNORED && image_type == IH_TYPE_FLATDT && ((uintptr_t)buf & 7)) { - loadbuf = memalign(8, len); + loadbuf = aligned_alloc(8, len); load = map_to_sysmem(loadbuf); memcpy(loadbuf, buf, len); } else if (load != data) {