On Thu, Apr 08, 2021 at 10:06:44PM +0200, Alexander Egorenkov wrote: > If the passed zImage happens to have a DTB appended, then the magic 4 bytes > of the DTB are copied together with the kernel image. This leads to > failed kexec boots because the decompressor finds the aforementioned > DTB magic and falsely tries to replace the DTB passed in the register r2 > with the non-existent appended one. > > Signed-off-by: Alexander Egorenkov <egorenar-dev@xxxxxxxxxx> Hi, I also see that, on line 558 len is further expanded as follows: /* * The zImage length does not include its stack (4k) or its * malloc space (64k). Include this. */ len += 0x11000; Is it intentional that this patch also excludes this extra length from the DTB? Or am I missing something? > --- > kexec/arch/arm/kexec-zImage-arm.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/kexec/arch/arm/kexec-zImage-arm.c b/kexec/arch/arm/kexec-zImage-arm.c > index 925a9be..8ec289d 100644 > --- a/kexec/arch/arm/kexec-zImage-arm.c > +++ b/kexec/arch/arm/kexec-zImage-arm.c > @@ -382,6 +382,7 @@ int zImage_arm_load(int argc, char **argv, const char *buf, off_t len, > unsigned int atag_offset = 0x1000; /* 4k offset from memory start */ > unsigned int extra_size = 0x8000; /* TEXT_OFFSET */ > const struct zimage_tag *tag; > + size_t kernel_buf_size; > size_t kernel_mem_size; > const char *command_line; > char *modified_cmdline = NULL; > @@ -537,6 +538,8 @@ int zImage_arm_load(int argc, char **argv, const char *buf, off_t len, > } > } > > + kernel_buf_size = len; > + > /* > * Always extend the zImage by four bytes to ensure that an appended > * DTB image always sees an initialised value after _edata. > @@ -759,7 +762,7 @@ int zImage_arm_load(int argc, char **argv, const char *buf, off_t len, > add_segment(info, dtb_buf, dtb_length, dtb_offset, dtb_length); > } > > - add_segment(info, buf, len, kernel_base, kernel_mem_size); > + add_segment(info, buf, kernel_buf_size, kernel_base, kernel_mem_size); > > info->entry = (void*)kernel_base; > > -- > 2.31.1 > > > _______________________________________________ > kexec mailing list > kexec@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/kexec > _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec