• Mel Gorman's avatar
    sched, numa: do not hint for NUMA balancing on VM_MIXEDMAP mappings · dd9aed05
    Mel Gorman authored
    commit 8e76d4ee upstream.
    
    Jovi Zhangwei reported the following problem
    
      Below kernel vm bug can be triggered by tcpdump which mmaped a lot of pages
      with GFP_COMP flag.
    
      [Mon May 25 05:29:33 2015] page:ffffea0015414000 count:66 mapcount:1 mapping:          (null) index:0x0
      [Mon May 25 05:29:33 2015] flags: 0x20047580004000(head)
      [Mon May 25 05:29:33 2015] page dumped because: VM_BUG_ON_PAGE(compound_order(page) && !PageTransHuge(page))
      [Mon May 25 05:29:33 2015] ------------[ cut here ]------------
      [Mon May 25 05:29:33 2015] kernel BUG at mm/migrate.c:1661!
      [Mon May 25 05:29:33 2015] invalid opcode: 0000 [#1] SMP
    
    In this case it was triggered by running tcpdump but it's not necessary
    reproducible on all systems.
    
      sudo tcpdump -i bond0.100 'tcp port 4242' -c 100000000000 -w 4242.pcap
    
    Compound pages cannot be migrated and it was not expected that such pages
    be marked for NUMA balancing.  This did not take into account that drivers
    such as net/packet/af_packet.c may insert compound pages into userspace
    with vm_insert_page.  This patch tells the NUMA balancing protection
    scanner to skip all VM_MIXEDMAP mappings which avoids the possibility that
    compound pages are marked for migration.
    Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
    Reported-by: default avatarJovi Zhangwei <jovi@cloudflare.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    [ kamal: backport to 3.19-stable ]
    Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
    dd9aed05
fair.c 212 KB