• Andrew Morton's avatar
    [PATCH] mremap: move_vma fixes and cleanup · e2ea8374
    Andrew Morton authored
    From: Hugh Dickins <hugh@veritas.com>
    
    Partial rewrite of mremap's move_vma.  Rajesh Venkatasubramanian has pointed
    out that vmtruncate could miss ptes, leaving orphaned pages, because move_vma
    only made the new vma visible after filling it.  We see no good reason for
    that, and time to make move_vma more robust.
    
    Removed all its vma merging decisions, leave them to mmap.c's vma_merge, with
    copy_vma added.  Removed duplicated is_mergeable_vma test from vma_merge, and
    duplicated validate_mm from insert_vm_struct.
    
    move_vma move from old to new then unmap old; but on error move back from new
    to old and unmap new.  Don't unwind within move_page_tables, let move_vma
    call it explicitly to unwind, with the right source vma.  Get the
    VM_ACCOUNTing right even when the final do_munmap fails.
    e2ea8374
mremap.c 9.53 KB