• Hugh Dickins's avatar
    KSM's scan allows for user pages to be COWed or unmapped at any time, · 3d39da78
    Hugh Dickins authored
    without requiring any notification.  But its stable tree does assume that
    when it finds a KSM page where it placed a KSM page, then it is the same
    KSM page that it placed there.
    
    mremap move could break that assumption: if an area containing a KSM page
    was unmapped, then an area containing a different KSM page was moved with
    mremap into the place of the original, before KSM's scan came around to
    notice.  That could then poison a node of the stable tree, so that memcmps
    would "lie" and upset the ordering of the tree.
    
    Probably noone will ever need mremap move on a VM_MERGEABLE area; except
    that prohibiting it would make trouble for schemes in which we try making
    everything VM_MERGEABLE e.g.  for testing: an mremap which normally works
    would then fail mysteriously.
    
    There's no need to go to any trouble, such as re-sorting KSM's list of
    rmap_items to match the new layout: simply unmerge the area to COW all its
    KSM pages before moving, but leave VM_MERGEABLE on so that they're
    remerged later.
    Signed-off-by: default avatarHugh Dickins <hugh.dickins@tiscali.co.uk>
    Signed-off-by: default avatarChris Wright <chrisw@redhat.com>
    Signed-off-by: default avatarIzik Eidus <ieidus@redhat.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Wu Fengguang <fengguang.wu@intel.com>
    Cc: Balbir Singh <balbir@in.ibm.com>
    Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Lee Schermerhorn <lee.schermerhorn@hp.com>
    Cc: Avi Kivity <avi@redhat.com>
    Cc: Nick Piggin <nickpiggin@yahoo.com.au>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    3d39da78
mremap.c 11.6 KB