summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksym Planeta <mcsim.planeta@gmail.com>2012-11-07 18:16:43 +0100
committerMaksym Planeta <mcsim.planeta@gmail.com>2012-11-07 18:16:43 +0100
commit29315c7849056f32d93df57fd931da8e45a2e740 (patch)
tree29510a8c9476937cce358c35c65909012f26d112
parente1a950b2649f056330cacf5016c91a4f8653f49c (diff)
Fix bug in cleanup after error.mplaneta/gsoc12/review
* vm/vm_fault.c (vm_cleanup_after_error): Alter only page structure. (vm_fault_page): Cleanup object after error.
-rw-r--r--vm/vm_fault.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/vm/vm_fault.c b/vm/vm_fault.c
index 286b423d..f80c26a1 100644
--- a/vm/vm_fault.c
+++ b/vm/vm_fault.c
@@ -308,7 +308,7 @@ static vm_fault_return_t
vm_cleanup_after_error (vm_object_t obj, vm_page_t m,
map_function_parameter_t parameter)
{
- vm_fault_cleanup(obj, m);
+ VM_PAGE_FREE(m);
return(VM_FAULT_SUCCESS);
}
@@ -850,6 +850,7 @@ vm_fault_return_t vm_fault_page(first_object, first_offset, map_entry,
map_function_parameter_t param = { .offset = 0}; /* Just stub */
printf("vm_fault: memory_object_data_unlock failed\n");
vm_object_lock(object);
+ vm_fault_cleanup(object, first_m);
vm_for_every_page (object, in_start, &in_end,
vm_cleanup_after_error,
param);