return -ENOMEM;
}
-/*
- * Return indicates whether a page was freed so caller can adjust rss
- */
-static inline void forget_pte(pte_t page)
-{
- if (!pte_none(page)) {
- printk("forget_pte: old mapping existed!\n");
- BUG();
- }
-}
-
static void zap_pte_range(mmu_gather_t *tlb, pmd_t * pmd, unsigned long address, unsigned long size)
{
unsigned long offset;
end = PMD_SIZE;
do {
pte_t zero_pte = pte_wrprotect(mk_pte(ZERO_PAGE(address), prot));
- pte_t oldpage = ptep_get_and_clear(pte);
+ BUG_ON(!pte_none(*pte));
set_pte(pte, zero_pte);
- forget_pte(oldpage);
address += PAGE_SIZE;
pte++;
} while (address && (address < end));
end = PMD_SIZE;
pfn = phys_addr >> PAGE_SHIFT;
do {
- pte_t oldpage = ptep_get_and_clear(pte);
-
+ BUG_ON(!pte_none(*pte));
if (!pfn_valid(pfn) || PageReserved(pfn_to_page(pfn)))
set_pte(pte, pfn_pte(pfn, prot));
- forget_pte(oldpage);
address += PAGE_SIZE;
pfn++;
pte++;