X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_mem_hook.c;h=c30e51d414c73dbc10a7c01863de4d3f906aca5f;hb=774bac9fbb03ef8bf7c2ca2c79a8b87c9bc4c526;hp=99730d5c92a385287492022a6856f13298643488;hpb=d16a049efb78e13e98ffdbaa8564d4ddc1be7f00;p=palacios.git diff --git a/palacios/src/palacios/vmm_mem_hook.c b/palacios/src/palacios/vmm_mem_hook.c index 99730d5..c30e51d 100644 --- a/palacios/src/palacios/vmm_mem_hook.c +++ b/palacios/src/palacios/vmm_mem_hook.c @@ -58,7 +58,7 @@ int v3_init_mem_hooks(struct v3_vm_info * vm) { struct v3_mem_hooks * hooks = &(vm->mem_hooks); - temp = V3_AllocPages(vm->num_cores); + temp = V3_AllocShadowSafePages(vm,vm->num_cores); if (!temp) { PrintError(vm, VCORE_NONE, "Cannot allocate space for mem hooks\n"); @@ -67,7 +67,7 @@ int v3_init_mem_hooks(struct v3_vm_info * vm) { hooks->hook_hvas_1 = V3_VAddr(temp); - temp = V3_AllocPages(vm->num_cores); + temp = V3_AllocShadowSafePages(vm,vm->num_cores); if (!temp) { PrintError(vm, VCORE_NONE,"Cannot allocate space for mem hooks\n"); @@ -505,6 +505,7 @@ static int free_hook(struct v3_vm_info * vm, struct mem_hook * hook) { // We do not support unhooking subregions int v3_unhook_mem(struct v3_vm_info * vm, uint16_t core_id, addr_t guest_addr_start) { struct v3_mem_region * reg = v3_get_mem_region(vm, core_id, guest_addr_start); + struct v3_mem_hooks * hooks = &(vm->mem_hooks); struct mem_hook * hook = NULL; if (reg == NULL) { @@ -522,6 +523,8 @@ int v3_unhook_mem(struct v3_vm_info * vm, uint16_t core_id, addr_t guest_addr_st free_hook(vm, hook); + v3_htable_remove(hooks->reg_table, (addr_t)reg, 0); + return 0; }