X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_mem_hook.c;h=8ee243aa9c907989a6bd19cb741d216a38b1435d;hb=d25220596e7ceb6b06a4b715f722a47afd8b48bb;hp=7064d4ed78fa43bfd858c7db1c5b58f33ed68dbc;hpb=d0ebfed83ac079f95da8bf79e64ac77f31d551ac;p=palacios.git diff --git a/palacios/src/palacios/vmm_mem_hook.c b/palacios/src/palacios/vmm_mem_hook.c index 7064d4e..8ee243a 100644 --- a/palacios/src/palacios/vmm_mem_hook.c +++ b/palacios/src/palacios/vmm_mem_hook.c @@ -21,6 +21,7 @@ #include #include #include +#include struct mem_hook { @@ -58,13 +59,15 @@ static int handle_mem_hook(struct guest_info * info, addr_t guest_va, addr_t gue if (reg->flags.alloced == 0) { op_addr = hook->hook_hva; } else { - op_addr = (addr_t)V3_VAddr((void *)v3_get_shadow_addr(reg, info->cpu_id, guest_pa)); + if (v3_gpa_to_hva(info, guest_pa, &op_addr) == -1) { + PrintError("Could not translate hook address (%p)\n", (void *)guest_pa); + return -1; + } } if (access_info.write == 1) { // Write Operation - if (v3_emulate_write_op(info, guest_va, guest_pa, op_addr, hook->write, hook->priv_data) == -1) { PrintError("Write Full Hook emulation failed\n");