Device tree (DTB) lengths are being padded to a multiple of 4 bytes
rather than the target-specific pointer size. This causes objects
following OBJ_TYPE_DTB objects to be incorrectly parsed during GRUB
execution on arm64.

Fix by using ALIGN_ADDR, not ALIGN_UP.

Signed-by-off: Matthew Daley <ma...@bugfuzz.com>
---
 util/mkimage.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/util/mkimage.c b/util/mkimage.c
index e22d82afa..b2f43fea6 100644
--- a/util/mkimage.c
+++ b/util/mkimage.c
@@ -829,7 +829,7 @@ grub_install_generate_image (const char *dir, const char 
*prefix,
 
   if (dtb_path)
     {
-      dtb_size = ALIGN_UP(grub_util_get_image_size (dtb_path), 4);
+      dtb_size = ALIGN_ADDR(grub_util_get_image_size (dtb_path));
       total_module_size += dtb_size + sizeof (struct grub_module_header);
     }
 
-- 
2.11.0


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to