From: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Date: Sat, 10 Sep 2005 17:44:58 +0000 (+0200)
Subject: [PATCH] uml: avoid already done dirtying
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=16b036786a6bd08cf7a91e0cd58219a6717da2a6;p=openwrt%2Fstaging%2Fblogic.git

[PATCH] uml: avoid already done dirtying

The PTE returned from handle_mm_fault is already marked as dirty and accessed
if needed.

Also, since this is not set with set_pte() (which sets NEWPAGE and NEWPROT as
needed), this wouldn't work anyway.

This version has been updated and fixed, thanks to some feedback from Jeff Dike.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---

diff --git a/arch/um/kernel/trap_kern.c b/arch/um/kernel/trap_kern.c
index d20361dcd127..87cc6fd76ced 100644
--- a/arch/um/kernel/trap_kern.c
+++ b/arch/um/kernel/trap_kern.c
@@ -85,8 +85,7 @@ survive:
 		pte = pte_offset_kernel(pmd, address);
 	} while(!pte_present(*pte));
 	err = 0;
-	*pte = pte_mkyoung(*pte);
-	if(pte_write(*pte)) *pte = pte_mkdirty(*pte);
+	WARN_ON(!pte_young(*pte) || (is_write && !pte_dirty(*pte)));
 	flush_tlb_page(vma, address);
 out:
 	up_read(&mm->mmap_sem);