From: Mikhail Lappo <[email protected]> libfdt requires the FDT blob to be 8-byte aligned. The alignment is validated in fdt_check_header(), and misaligned blobs may be rejected or cause failures on architectures that enforce strict alignment.
Currently the blob is allocated with grub_malloc(), which does not guarantee 8-byte alignment. Replace it with grub_memalign(8, size) to ensure the required alignment. Signed-off-by: Mikhail Lappo <[email protected]> --- grub-core/loader/efi/fdt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/grub-core/loader/efi/fdt.c b/grub-core/loader/efi/fdt.c index e510b3491..f25d362d3 100644 --- a/grub-core/loader/efi/fdt.c +++ b/grub-core/loader/efi/fdt.c @@ -38,6 +38,7 @@ static void *fdt; #define FDT_ADDR_SIZE_EXTRA ((2 * grub_fdt_prop_entry_size (sizeof(grub_uint32_t))) + \ sizeof (FDT_ADDR_CELLS_STRING) + \ sizeof (FDT_SIZE_CELLS_STRING)) +#define FDT_BLOB_ALIGNMENT 8 static const struct grub_arg_option options_fdtdump[] = { {"prop", 'p', 0, N_("Get property."), N_("prop"), ARG_TYPE_STRING}, @@ -145,7 +146,7 @@ grub_cmd_devicetree (grub_command_t cmd __attribute__ ((unused)), goto out; size = grub_file_size (dtb); - blob = grub_malloc (size); + blob = grub_memalign (FDT_BLOB_ALIGNMENT, size); if (!blob) goto out; -- 2.44.0 _______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
