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:
parent
1933ee93cb
commit
4a176212eb
|
@ -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.
|
* 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,
|
(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. */
|
/* copy_to_gpa has it's stac/clac inside. So call stac again here. */
|
||||||
stac();
|
stac();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue