--- 25-akpm/mm/memory.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-) diff -puN mm/memory.c~get_user_pages-restore-protections-fix mm/memory.c --- 25/mm/memory.c~get_user_pages-restore-protections-fix Mon Feb 2 14:34:34 2004 +++ 25-akpm/mm/memory.c Mon Feb 2 14:35:47 2004 @@ -701,6 +701,7 @@ restore_page_prot(struct mm_struct *mm, pgd_t *pgd = pgd_offset(mm, address); pmd_t *pmd = pmd_alloc(mm, pgd, address); pte_t *pte; + pte_t entry; if (!pmd) return; @@ -708,7 +709,9 @@ restore_page_prot(struct mm_struct *mm, if (!pte) return; flush_cache_page(vma, address); - ptep_establish(vma, address, pte, pte_modify(*pte, vma->vm_page_prot)); + entry = pte_modify(*pte, vma->vm_page_prot); + ptep_establish(vma, address, pte, entry); + flush_tlb_page(vma, address); update_mmu_cache(vma, address, entry); pte_unmap(pte); } _