Discussion:
[PATCH] mkimage: pad DTBs to target-specific pointer size
(too old to reply)
Matthew Daley
2018-11-06 22:44:08 UTC
Permalink
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 <***@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
Daniel Kiper
2018-11-14 16:34:30 UTC
Permalink
Post by Matthew Daley
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.
Reviewed-by: Daniel Kiper <***@oracle.com>

Daniel

Loading...