From: Erik van der Kouwe <erikvdk@gmail.com>
Date: Sat, 12 Mar 2011 07:45:11 +0000 (-0600)
Subject: This patch prevents v3_delete_mem_region from freeing memory when it still needs... 
X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=83bd28a67ecaaa7dfd9db4c459485cf8af07d4a5;p=palacios.git

This patch prevents v3_delete_mem_region from freeing memory when it still needs to be read.
---

diff --git a/palacios/src/palacios/vmm_mem.c b/palacios/src/palacios/vmm_mem.c
index 64c83c7..c43dcae 100644
--- a/palacios/src/palacios/vmm_mem.c
+++ b/palacios/src/palacios/vmm_mem.c
@@ -414,13 +414,13 @@ void v3_delete_mem_region(struct v3_vm_info * vm, struct v3_mem_region * reg) {
 
     v3_rb_erase(&(reg->tree_node), &(vm->mem_map.mem_regions));
 
-    V3_Free(reg);
 
 
     // If the guest isn't running then there shouldn't be anything to invalidate. 
     // Page tables should __always__ be created on demand during execution
     // NOTE: This is a sanity check, and can be removed if that assumption changes
     if (vm->run_state != VM_RUNNING) {
+	V3_Free(reg);
 	return;
     }
 
@@ -457,6 +457,8 @@ void v3_delete_mem_region(struct v3_vm_info * vm, struct v3_mem_region * reg) {
 	}
     }
 
+    V3_Free(reg);
+
     // flush virtual page tables 
     // 3 cases shadow, shadow passthrough, and nested