hw/arm/boot: fix direct kernel boot with initrd
Fix the condition used to check whether the initrd fits into RAM; in some cases if an initrd was also passed on the command line we would get an error stating that it was too big to fit into RAM after the kernel. Despite the error the loader continued anyway, though, so also add an exit(1) when the initrd is actually too big. Fixes: 852dc64d665f ("hw/arm/boot: Diagnose layouts that put initrd or DTB off the end of RAM") Signed-off-by: Andrew Jones <drjones@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20190618125844.4863-1-drjones@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
ae9108f8f0
commit
b48b064009
@ -1109,10 +1109,11 @@ static void arm_setup_direct_kernel_boot(ARMCPU *cpu,
|
|||||||
info->initrd_filename);
|
info->initrd_filename);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
if (info->initrd_start + initrd_size > info->ram_size) {
|
if (info->initrd_start + initrd_size > ram_end) {
|
||||||
error_report("could not load initrd '%s': "
|
error_report("could not load initrd '%s': "
|
||||||
"too big to fit into RAM after the kernel",
|
"too big to fit into RAM after the kernel",
|
||||||
info->initrd_filename);
|
info->initrd_filename);
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
initrd_size = 0;
|
initrd_size = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user