mm: disable DEFERRED_STRUCT_PAGE_INIT on !NO_BOOTMEM
authorGavin Shan <gwshan@linux.vnet.ibm.com>
Fri, 27 May 2016 21:27:49 +0000 (14:27 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 27 May 2016 21:49:37 +0000 (14:49 -0700)
When we have !NO_BOOTMEM, the deferred page struct initialization
doesn't work well because the pages reserved in bootmem are released to
the page allocator uncoditionally.  It causes memory corruption and
system crash eventually.

As Mel suggested, the bootmem is retiring slowly.  We fix the issue by
simply hiding DEFERRED_STRUCT_PAGE_INIT when bootmem is enabled.

Link: http://lkml.kernel.org/r/1460602170-5821-1-git-send-email-gwshan@linux.vnet.ibm.com
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Acked-by: Mel Gorman <mgorman@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/Kconfig

index 22fa8189e4fc8bce3073ca4db3421aaadb5428e5..3e2daef3c946a117bbfa4e63fa6a4fb7bd31a5ad 100644 (file)
@@ -648,7 +648,7 @@ config DEFERRED_STRUCT_PAGE_INIT
        bool "Defer initialisation of struct pages to kthreads"
        default n
        depends on ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
-       depends on MEMORY_HOTPLUG
+       depends on NO_BOOTMEM && MEMORY_HOTPLUG
        depends on !FLATMEM
        help
          Ordinarily all struct pages are initialised during early boot in a