> kimage_load_cma_segment() and kimage_map_segment() both translate > a CMA segment using page_address(cma), which returns the CMA base > address. This ignores segment->mem. > > On arm64, image_load() adds text_offset to segment->mem before the > segment is loaded: > > kernel_segment->mem += text_offset; > kernel_segment->memsz -= text_offset; > image->start = kernel_segment->mem; > > so segment->mem no longer matches the CMA base. The kernel payload is > therefore copied to the wrong offset, while image->start points past > it, and kexec jumps into the middle of the kernel. > > [ ... ] > Cc: Sourabh Jain <[email protected]> > Cc: Breno Leitao <[email protected]> > Cc: [email protected] > Fixes: 07d24902977e ("kexec: enable CMA based contiguous allocation") > Signed-off-by: Jinjie Ruan <[email protected]>
Sashiko has reviewed this patch and found no issues. It looks great! -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=1
