HV: elf_loader: Fix copy gpa bug in load elf32

The elf images can't be loaded correctly because
the elf_loader copy_to_gpa with wrong size.
The p_filesz and p_memsz both belong to elf32_prog_entry,
this data structure describes segments loaded in ram.
p_filesz means size of segment in file and p_memsz
means size of segment in memory.
ELF loader should copy elf_img to gpa with the
size of p_prg_tbl_head32->p_filesz.

Tracked-On: #8642

Signed-off-by: Zhang Chen <chen.zhang@intel.com>
Signed-off-by: Victor Sun <victor.sun@intel.com>
Reviewed-by: Junjie Mao <junjie.mao@intel.com>
This commit is contained in:
Zhang Chen 2023-07-27 16:05:31 +08:00 committed by acrnsi-robot
parent 1933ee93cb
commit 4a176212eb
1 changed files with 1 additions and 1 deletions

View File

@ -173,7 +173,7 @@ static void *do_load_elf32(struct acrn_vm *vm)
* We assume that the guest elf can put segments to valid gpa.
*/
(void)copy_to_gpa(vm, p_elf_img + p_prg_tbl_head32->p_offset,
p_prg_tbl_head32->p_paddr, p_prg_tbl_head32->p_memsz);
p_prg_tbl_head32->p_paddr, p_prg_tbl_head32->p_filesz);
/* copy_to_gpa has it's stac/clac inside. So call stac again here. */
stac();
}