Author: bonefish Date: 2010-01-08 21:01:19 +0100 (Fri, 08 Jan 2010) New Revision: 34954 Changeset: http://dev.haiku-os.org/changeset/34954/haiku Modified: haiku/trunk/src/system/kernel/vm/vm.cpp Log: unmap_and_free_physical_pages(): Don't try to free already free pages. Apparently (at least when running in VMware >=2) the boot loader can still map the same physical page more than once -- in the ACPI or HPET code I suppose -- which would lead to this situation. Modified: haiku/trunk/src/system/kernel/vm/vm.cpp =================================================================== --- haiku/trunk/src/system/kernel/vm/vm.cpp 2010-01-08 18:39:05 UTC (rev 34953) +++ haiku/trunk/src/system/kernel/vm/vm.cpp 2010-01-08 20:01:19 UTC (rev 34954) @@ -2929,7 +2929,8 @@ if (map->ops->query(map, current, &physicalAddress, &flags) == B_OK && (flags & PAGE_PRESENT) != 0) { vm_page* page = vm_lookup_page(physicalAddress / B_PAGE_SIZE); - if (page != NULL) { + if (page != NULL && page->state != PAGE_STATE_FREE + && page->state != PAGE_STATE_CLEAR) { DEBUG_PAGE_ACCESS_START(page); vm_page_set_state(page, PAGE_STATE_FREE); }