diff options
| author | Tom Rini <[email protected]> | 2025-12-02 15:20:33 -0600 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2025-12-04 14:50:46 -0600 |
| commit | abd6e0f252ee17b18e98be69d87aaca6a26e8336 (patch) | |
| tree | 2c37aaf144add50c69412b7ed307dd8ff30fc4bd | |
| parent | b493db39ea7fb1205d3a2df269352cb79874c1c7 (diff) | |
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 <[email protected]>
Signed-off-by: Tom Rini <[email protected]>
| -rw-r--r-- | boot/image-fit.c | 11 |
1 files changed, 8 insertions, 3 deletions
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 <linux/libfdt.h> #include <u-boot/crc.h> #include <linux/kconfig.h> + +/* C11 standard function for aligned allocations */ +extern void *aligned_alloc(size_t alignment, size_t size); #else #include <linux/compiler.h> #include <linux/sizes.h> @@ -23,19 +26,21 @@ #include <log.h> #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> #include <u-boot/hash.h> #endif +#define aligned_alloc(a, s) memalign((a), (s)) + DECLARE_GLOBAL_DATA_PTR; #endif /* !USE_HOSTCC*/ #include <bootm.h> #include <image.h> #include <bootstage.h> -#include <malloc.h> #include <upl.h> #include <u-boot/crc.h> @@ -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) { |
