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;

Reply via email to