Skip to content
  • Mel Gorman's avatar
    mm, page_alloc: always use a captured page regardless of compaction result · ee8ab0ee
    Mel Gorman authored
    During the development of commit 5e1f0f09 ("mm, compaction: capture
    a page under direct compaction"), a paranoid check was added to ensure
    that if a captured page was available after compaction that it was
    consistent with the final state of compaction.  The intent was to catch
    serious programming bugs such as using a stale page pointer and causing
    corruption problems.
    
    However, it is possible to get a captured page even if compaction was
    unsuccessful if an interrupt triggered and happened to free pages in
    interrupt context that got merged into a suitable high-order page.  It's
    highly unlikely but Li Wang did report the following warning on s390
    occuring when testing OOM handling.  Note that the warning is slightly
    edited for clarity.
    
      WARNING: CPU: 0 PID: 9783 at mm/page_alloc.c:3777 __alloc_pages_direct_compact+0x182/0x190
      Modules linked in: rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs
        lockd grace fscache sunrpc pkey ghash_s390 prng xts aes_s390
        des_s390 des_generic sha512_s390 zcrypt_cex4 zcrypt vmur binfmt_misc
        ip_tables xfs libcrc32c dasd_fba_mod qeth_l2 dasd_eckd_mod dasd_mod
        qeth qdio lcs ctcm ccwgroup fsm dm_mirror dm_region_hash dm_log
        dm_mod
      CPU: 0 PID: 9783 Comm: copy.sh Kdump: loaded Not tainted 5.1.0-rc 5 #1
    
    This patch simply removes the check entirely instead of trying to be
    clever about pages freed from interrupt context.  If a serious
    programming error was introduced, it is highly likely to be caught by
    prep_new_page() instead.
    
    Link: http://lkml.kernel.org/r/20190419085133.GH18914@techsingularity.net
    Fixes: 5e1f0f09
    
     ("mm, compaction: capture a page under direct compaction")
    Signed-off-by: default avatarMel Gorman <mgorman@techsingularity.net>
    Reported-by: default avatarLi Wang <liwang@redhat.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ee8ab0ee