Hi,
Test the iterated range, instead of the range chosen to not meet the
assert. This has been broken for a long time, but apparently no-one hit
it so far.
While here, change the KASSERT to a KDASSERT, as it is a validation of
internal state of pmemrange.
Ok?
--
Ariane
Index: uvm_pmemrange.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_pmemrange.c,v
retrieving revision 1.18
diff -u -d -p -r1.18 uvm_pmemrange.c
--- uvm_pmemrange.c 28 Aug 2010 22:27:47 -0000 1.18
+++ uvm_pmemrange.c 4 Apr 2011 14:01:41 -0000
@@ -1630,8 +1630,8 @@ uvm_pmr_rootupdate(struct uvm_pmemrange
for (low = RB_NEXT(uvm_pmr_addr, &pmr->addr, low);
low != high;
low = RB_NEXT(uvm_pmr_addr, &pmr->addr, low)) {
- KASSERT(PMR_IS_SUBRANGE_OF(atop(VM_PAGE_TO_PHYS(high_next)),
- atop(VM_PAGE_TO_PHYS(high_next)) + high_next->fpgsz,
+ KDASSERT(PMR_IS_SUBRANGE_OF(atop(VM_PAGE_TO_PHYS(low)),
+ atop(VM_PAGE_TO_PHYS(low)) + low->fpgsz,
start, end));
if (uvm_pmr_pg_to_memtype(low) == memtype)
return low;