X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_mem_hook.c;h=aee8c33f2fdb556cdfd12a02c179daf050e989ff;hb=603e4c1a451138080ded3d4e3cd3b8716741db89;hp=6993c9ee4a16eaea8632ef89b5d5f8c4791c60de;hpb=0a4bd37f65c15fe50680e51b68f3f95ec8d347ea;p=palacios-OLD.git diff --git a/palacios/src/palacios/vmm_mem_hook.c b/palacios/src/palacios/vmm_mem_hook.c index 6993c9e..aee8c33 100644 --- a/palacios/src/palacios/vmm_mem_hook.c +++ b/palacios/src/palacios/vmm_mem_hook.c @@ -145,6 +145,7 @@ static int handle_mem_hook(struct guest_info * core, addr_t guest_va, addr_t gue } + // Test source operand, if it's memory we need to do some translations, and handle a possible hook if (instr.src_operand.type == MEM_OPERAND) { struct v3_mem_region * src_reg = NULL; @@ -162,8 +163,8 @@ static int handle_mem_hook(struct guest_info * core, addr_t guest_va, addr_t gue } } - if ((guest_pa >= reg->guest_start) && - (guest_pa <= reg->guest_end)) { + if ((src_mem_op_gpa >= reg->guest_start) && + (src_mem_op_gpa < reg->guest_end)) { // Src address corresponds to faulted region src_reg = reg; } else { @@ -208,8 +209,8 @@ static int handle_mem_hook(struct guest_info * core, addr_t guest_va, addr_t gue } } - if ((guest_pa >= reg->guest_start) && - (guest_pa <= reg->guest_end)) { + if ((dst_mem_op_gpa >= reg->guest_start) && + (dst_mem_op_gpa < reg->guest_end)) { // Dst address corresponds to faulted region dst_reg = reg; } else {