• Mel Gorman's avatar
    xen: properly account for _PAGE_NUMA during xen pte translations · a9c8e4be
    Mel Gorman authored
    Steven Noonan forwarded a users report where they had a problem starting
    vsftpd on a Xen paravirtualized guest, with this in dmesg:
    
      BUG: Bad page map in process vsftpd  pte:8000000493b88165 pmd:e9cc01067
      page:ffffea00124ee200 count:0 mapcount:-1 mapping:     (null) index:0x0
      page flags: 0x2ffc0000000014(referenced|dirty)
      addr:00007f97eea74000 vm_flags:00100071 anon_vma:ffff880e98f80380 mapping:          (null) index:7f97eea74
      CPU: 4 PID: 587 Comm: vsftpd Not tainted 3.12.7-1-ec2 #1
      Call Trace:
        dump_stack+0x45/0x56
        print_bad_pte+0x22e/0x250
        unmap_single_vma+0x583/0x890
        unmap_vmas+0x65/0x90
        exit_mmap+0xc5/0x170
        mmput+0x65/0x100
        do_exit+0x393/0x9e0
        do_group_exit+0xcc/0x140
        SyS_exit_group+0x14/0x20
        system_call_fastpath+0x1a/0x1f
      Disabling lock debugging due to kernel taint
      BUG: Bad rss-counter state mm:ffff880e9ca60580 idx:0 val:-1
      BUG: Bad rss-counter state mm:ffff880e9ca60580 idx:1 val:1
    
    The issue could not be reproduced under an HVM instance with the same
    kernel, so it appears to be exclusive to paravirtual Xen guests.  He
    bisected the problem to commit 1667918b ("mm: numa: clear numa
    hinting information on mprotect") that was also included in 3.12-stable.
    
    The problem was related to how xen translates ptes because it was not
    accounting for the _PAGE_NUMA bit.  This patch splits pte_present to add
    a pteval_present helper for use by xen so both bare metal and xen use
    the same code when checking if a PTE is present.
    
    [mgorman@suse.de: wrote changelog, proposed minor modifications]
    [akpm@linux-foundation.org: fix typo in comment]
    Reported-by: default avatarSteven Noonan <steven@uplinklabs.net>
    Tested-by: default avatarSteven Noonan <steven@uplinklabs.net>
    Signed-off-by: default avatarElena Ufimtseva <ufimtseva@gmail.com>
    Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
    Reviewed-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
    Acked-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: <stable@vger.kernel.org>	[3.12+]
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    a9c8e4be
pgtable.h 21.3 KB