Messages in this thread Patch in this message | | | Subject | [PATCH] mm: avoid dirtying shared mappings on mlock | From | Peter Zijlstra <> | Date | Fri, 12 Oct 2007 11:03:25 +0200 |
| |
Subject: mm: avoid dirtying shared mappings on mlock
Suleiman noticed that shared mappings get dirtied when mlocked. Avoid this by teaching make_pages_present about this case.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Acked-by: Suleiman Souhlal <suleiman@google.com> --- mm/memory.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
Index: linux-2.6/mm/memory.c =================================================================== --- linux-2.6.orig/mm/memory.c +++ linux-2.6/mm/memory.c @@ -2719,7 +2719,12 @@ int make_pages_present(unsigned long add vma = find_vma(current->mm, addr); if (!vma) return -1; - write = (vma->vm_flags & VM_WRITE) != 0; + /* + * We want to touch writable mappings with a write fault in order + * to break COW, except for shared mappings because these don't COW + * and we would not want to dirty them for nothing. + */ + write = (vma->vm_flags & (VM_WRITE|VM_SHARED)) == VM_WRITE; BUG_ON(addr >= end); BUG_ON(end > vma->vm_end); len = DIV_ROUND_UP(end, PAGE_SIZE) - addr/PAGE_SIZE; [unhandled content-type:application/pgp-signature] | |