X-Git-Url: http://git.samba.org/samba.git/?a=blobdiff_plain;f=mm%2Ffremap.c;h=4e3f53dd5fd448d20a23296dfb398dd1d281fee0;hb=485cf925d8b7a6b3c62fe5f1e167f2d0d4edf32a;hp=21b7d0cbc98c6eed4c859cebc825ee2c3d715ee1;hpb=6edad161cd4dfe1df772e7a74ab63cab53b5e8c1;p=sfrench%2Fcifs-2.6.git diff --git a/mm/fremap.c b/mm/fremap.c index 21b7d0cbc98c..4e3f53dd5fd4 100644 --- a/mm/fremap.c +++ b/mm/fremap.c @@ -33,13 +33,13 @@ static int zap_pte(struct mm_struct *mm, struct vm_area_struct *vma, if (page) { if (pte_dirty(pte)) set_page_dirty(page); - page_remove_rmap(page); + page_remove_rmap(page, vma); page_cache_release(page); } } else { if (!pte_file(pte)) free_swap_and_cache(pte_to_swp_entry(pte)); - pte_clear(mm, addr, ptep); + pte_clear_not_present_full(mm, addr, ptep, 0); } return !!page; } @@ -79,9 +79,9 @@ int install_page(struct mm_struct *mm, struct vm_area_struct *vma, inc_mm_counter(mm, file_rss); flush_icache_page(vma, page); - set_pte_at(mm, addr, pte, mk_pte(page, prot)); + pte_val = mk_pte(page, prot); + set_pte_at(mm, addr, pte, pte_val); page_add_file_rmap(page); - pte_val = *pte; update_mmu_cache(vma, addr, pte_val); lazy_mmu_prot_update(pte_val); err = 0; @@ -101,7 +101,6 @@ int install_file_pte(struct mm_struct *mm, struct vm_area_struct *vma, { int err = -ENOMEM; pte_t *pte; - pte_t pte_val; spinlock_t *ptl; pte = get_locked_pte(mm, addr, &ptl); @@ -114,7 +113,6 @@ int install_file_pte(struct mm_struct *mm, struct vm_area_struct *vma, } set_pte_at(mm, addr, pte, pgoff_to_pte(pgoff)); - pte_val = *pte; /* * We don't need to run update_mmu_cache() here because the "file pte" * being installed by install_file_pte() is not a real pte - it's a