. snip.. > static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd, > unsigned long addr, unsigned long end, > - pte_fn_t fn, void *data) > + pte_batch_fn_t fn, void *data) > { > pte_t *pte; > int err; > - pgtable_t token; > spinlock_t *uninitialized_var(ptl); > > pte = (mm == &init_mm) ? > @@ -1940,25 +1939,17 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd, > BUG_ON(pmd_huge(*pmd)); > > arch_enter_lazy_mmu_mode(); > - > - token = pmd_pgtable(*pmd); > - > - do { > - err = fn(pte++, addr, data); > - if (err) > - break; > - } while (addr += PAGE_SIZE, addr != end); > - > + err = fn(pte, (end - addr) / PAGE_SIZE, addr, data); > arch_leave_lazy_mmu_mode(); > > if (mm != &init_mm) > - pte_unmap_unlock(pte-1, ptl); > + pte_unmap_unlock(pte, ptl); That looks like a bug fix as well? Did this hit us before the change or was it masked by the fact that the code never go to here? > return err; > } -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>