Hey David, Ryan, How about this change? static inline void clear_young_dirty_ptes(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, unsigned int nr, cydp_t flags) { if (flags == CYDP_CLEAR_YOUNG) { for (;;) { ptep_test_and_clear_young(vma, addr, ptep); if (--nr == 0) break; ptep++; addr += PAGE_SIZE; } return; } pte_t pte; for (;;) { pte = ptep_get_and_clear(vma->vm_mm, addr, ptep); if (flags & CYDP_CLEAR_YOUNG) pte = pte_mkold(pte); if (flags & CYDP_CLEAR_DIRTY) pte = pte_mkclean(pte); if (--nr == 0) break; ptep++; addr += PAGE_SIZE; } } Thanks, Lance