From 08505f39af1322429b7abe95dcbd8411c1d9ca29 Mon Sep 17 00:00:00 2001 From: Nick Piggin Date: Sat, 3 Sep 2005 15:54:49 -0700 Subject: [PATCH] --- yaml --- r: 6863 b: refs/heads/master c: 9a61c349b28ec5aef7e929236571fd770fdef0bb h: refs/heads/master i: 6861: 96b6e6ea515100855b01ae213a5237996adf16d6 6859: 08b7af5af37e48f58d5e296d586327eecda5b278 6855: 67c37ef3dedb2db0c7b7a53c3442ee0288bf779b 6847: 079764d772f292031122960242c6073589020e59 v: v3 --- [refs] | 2 +- trunk/mm/mremap.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index cffd4e4c4138..da4603f2edb6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4d7670e0f649f9e6e6ea6c8bb9f52441fa00f92b +refs/heads/master: 9a61c349b28ec5aef7e929236571fd770fdef0bb diff --git a/trunk/mm/mremap.c b/trunk/mm/mremap.c index fc45dc9a617b..a32fed454bd7 100644 --- a/trunk/mm/mremap.c +++ b/trunk/mm/mremap.c @@ -141,6 +141,10 @@ move_one_page(struct vm_area_struct *vma, unsigned long old_addr, if (dst) { pte_t pte; pte = ptep_clear_flush(vma, old_addr, src); + /* ZERO_PAGE can be dependant on virtual addr */ + if (pfn_valid(pte_pfn(pte)) && + pte_page(pte) == ZERO_PAGE(old_addr)) + pte = pte_wrprotect(mk_pte(ZERO_PAGE(new_addr), new_vma->vm_page_prot)); set_pte_at(mm, new_addr, dst, pte); } else error = -ENOMEM;