• Peter Feiner's avatar
    mm: softdirty: respect VM_SOFTDIRTY in PTE holes · 68b5a652
    Peter Feiner authored
    
    
    After a VMA is created with the VM_SOFTDIRTY flag set, /proc/pid/pagemap
    should report that the VMA's virtual pages are soft-dirty until
    VM_SOFTDIRTY is cleared (i.e., by the next write of "4" to
    /proc/pid/clear_refs).  However, pagemap ignores the VM_SOFTDIRTY flag
    for virtual addresses that fall in PTE holes (i.e., virtual addresses
    that don't have a PMD, PUD, or PGD allocated yet).
    
    To observe this bug, use mmap to create a VMA large enough such that
    there's a good chance that the VMA will occupy an unused PMD, then test
    the soft-dirty bit on its pages.  In practice, I found that a VMA that
    covered a PMD's worth of address space was big enough.
    
    This patch adds the necessary VMA lookup to the PTE hole callback in
    /proc/pid/pagemap's page walk and sets soft-dirty according to the VMAs'
    VM_SOFTDIRTY flag.
    Signed-off-by: default avatarPeter Feiner <pfeiner@google.com>
    Acked-by: default avatarCyrill Gorcunov <gorcunov@openvz.org>
    Cc: Pavel Emelyanov <xemul@parallels.com>
    Cc: Hugh Dickins <hughd@google.com>
    Acked-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    68b5a652