Index: uvm/uvm_pmemrange.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_pmemrange.c,v
retrieving revision 1.37
diff -p -u -r1.37 uvm_pmemrange.c
--- uvm/uvm_pmemrange.c 6 Feb 2014 16:40:40 -0000 1.37
+++ uvm/uvm_pmemrange.c 13 Feb 2014 22:28:29 -0000
@@ -1647,7 +1647,7 @@ uvm_pmr_rootupdate(struct uvm_pmemrange
* Cache the lower page, so we can page-walk later.
*/
low = root;
- low_next = RB_RIGHT(low, objt);
+ low_next = RB_LEFT(low, objt);
while (low_next != NULL && PMR_INTERSECTS_WITH(
atop(VM_PAGE_TO_PHYS(low_next)),
atop(VM_PAGE_TO_PHYS(low_next)) + low_next->fpgsz,
@@ -1655,8 +1655,11 @@ uvm_pmr_rootupdate(struct uvm_pmemrange
low = low_next;
if (uvm_pmr_pg_to_memtype(low) == memtype)
return low;
- low_next = RB_RIGHT(low, objt);
+ low_next = RB_LEFT(low, objt);
}
+
+ if (low == high)
+ return NULL;
/*
* Ack, no hits. Walk the address tree until to find something usable.