Before this patch, when no --image-size passed, initrd_base is caculated using
base + len * 4, which is unaligned, and unable to pass check in
add_segment_phys_virt():

        if (base & (pagesize -1)) {
                die("Base address: 0x%lx is not page aligned\n", base);
        }

Signed-off-by: Wang Nan <[email protected]>
Cc: Simon Horman <[email protected]>
Cc: Dave Young <[email protected]>
Cc: Geng Hui <[email protected]>
---
 kexec/arch/arm/kexec-zImage-arm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kexec/arch/arm/kexec-zImage-arm.c 
b/kexec/arch/arm/kexec-zImage-arm.c
index 792187a..4547765 100644
--- a/kexec/arch/arm/kexec-zImage-arm.c
+++ b/kexec/arch/arm/kexec-zImage-arm.c
@@ -351,7 +351,7 @@ int zImage_arm_load(int argc, char **argv, const char *buf, 
off_t len,
        } else {
                /* Otherwise, assume the maximum kernel compression ratio
                 * is 4, and just to be safe, place ramdisk after that */
-               initrd_base = base + len * 4;
+               initrd_base =  base + _ALIGN(len * 4, 4096);
        }
 
        if (use_atags) {
-- 
1.8.4


_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to