Michal Hocko
4aa9fc2a43
Revert "mm, memory_hotplug: initialize struct pages for the full memory section"
...
This reverts commit 2830bf6f05 .
The underlying assumption that one sparse section belongs into a single
numa node doesn't hold really. Robert Shteynfeld has reported a boot
failure. The boot log was not captured but his memory layout is as
follows:
Early memory node ranges
node 1: [mem 0x0000000000001000-0x0000000000090fff]
node 1: [mem 0x0000000000100000-0x00000000dbdf8fff]
node 1: [mem 0x0000000100000000-0x0000001423ffffff]
node 0: [mem 0x0000001424000000-0x0000002023ffffff]
This means that node0 starts in the middle of a memory section which is
also in node1. memmap_init_zone tries to initialize padding of a
section even when it is outside of the given pfn range because there are
code paths (e.g. memory hotplug) which assume that the full worth of
memory section is always initialized.
In this particular case, though, such a range is already intialized and
most likely already managed by the page allocator. Scribbling over
those pages corrupts the internal state and likely blows up when any of
those pages gets used.
Reported-by: Robert Shteynfeld <robert.shteynfeld@gmail.com>
Fixes: 2830bf6f05 ("mm, memory_hotplug: initialize struct pages for the full memory section")
Cc: stable@kernel.org
Signed-off-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-01-28 10:35:22 -08:00
..
kasan
kasan: fix krealloc handling for tag-based mode
2019-01-08 17:15:11 -08:00
backing-dev.c
writeback: synchronize sync(2) against cgroup writeback membership switches
2019-01-22 14:39:38 -07:00
balloon_compaction.c
cleancache.c
mm: use octal not symbolic permissions
2018-06-15 07:55:25 +09:00
cma.c
kasan, mm, arm64: tag non slab memory allocated via pagealloc
2018-12-28 12:11:44 -08:00
cma.h
cma_debug.c
mm/cma: remove unsupported gfp_mask parameter from cma_alloc()
2018-08-17 16:20:32 -07:00
compaction.c
mm: move zone watermark accesses behind an accessor
2018-12-28 12:11:48 -08:00
debug.c
mm/debug.c: make "migrate_reason_names[]" const char *
2018-12-28 12:11:48 -08:00
debug_page_ref.c
dmapool.c
mm: use octal not symbolic permissions
2018-06-15 07:55:25 +09:00
early_ioremap.c
fadvise.c
vfs: implement readahead(2) using POSIX_FADV_WILLNEED
2018-08-30 20:01:32 +02:00
failslab.c
mm: use octal not symbolic permissions
2018-06-15 07:55:25 +09:00
filemap.c
mm/: remove caller signal_pending branch predictions
2019-01-04 13:13:48 -08:00
frame_vector.c
frontswap.c
mm: use octal not symbolic permissions
2018-06-15 07:55:25 +09:00
gup.c
Merge branch 'akpm' (patches from Andrew)
2019-01-05 09:16:18 -08:00
gup_benchmark.c
mm/gup_benchmark.c: prevent integer overflow in ioctl
2018-10-31 08:54:12 -07:00
highmem.c
mm: convert totalram_pages and totalhigh_pages variables to atomic
2018-12-28 12:11:47 -08:00
hmm.c
mm/hmm: fix memremap.h, move dev_page_fault_t callback to hmm
2018-12-28 12:11:52 -08:00
huge_memory.c
mm: treewide: remove unused address argument from pte_alloc functions
2019-01-04 13:13:47 -08:00
hugetlb.c
hugetlbfs: revert "use i_mmap_rwsem for more pmd sharing synchronization"
2019-01-08 17:15:11 -08:00
hugetlb_cgroup.c
mm: rename page_counter's count/limit into usage/max
2018-06-07 17:34:35 -07:00
hwpoison-inject.c
init-mm.c
mm: Allocate the mm_cpumask (mm->cpu_bitmap[]) dynamically based on nr_cpu_ids
2018-07-17 09:35:30 +02:00
internal.h
mm: use alloc_flags to record if kswapd can wake
2018-12-28 12:11:48 -08:00
interval_tree.c
Kconfig
ksm: replace jhash2 with xxhash
2018-12-28 12:11:46 -08:00
Kconfig.debug
mm: clarify CONFIG_PAGE_POISONING and usage
2018-08-22 10:52:44 -07:00
khugepaged.c
mm/mmu_notifier: use structure for invalidate_range_start/end calls v2
2018-12-28 12:11:50 -08:00
kmemleak-test.c
kmemleak.c
kmemleak: add config to select auto scan
2018-12-28 12:11:51 -08:00
ksm.c
ksm: react on changing "sleep_millisecs" parameter faster
2018-12-28 12:11:51 -08:00
list_lru.c
mm/list_lru: introduce list_lru_shrink_walk_irq()
2018-08-17 16:20:32 -07:00
maccess.c
x86/fault: BUG() when uaccess helpers fault on kernel addresses
2018-09-03 15:12:09 +02:00
madvise.c
mm/mmu_notifier: use structure for invalidate_range_start/end calls v2
2018-12-28 12:11:50 -08:00
Makefile
mm: remove nobootmem
2018-10-31 08:54:16 -07:00
memblock.c
mm/memblock.c: skip kmemleak for kasan_init()
2018-12-28 12:11:49 -08:00
memcontrol.c
memcg, oom: notify on oom killer invocation from the charge path
2018-12-28 12:11:52 -08:00
memfd.c
memfd: Convert memfd_tag_pins to XArray
2018-10-21 10:46:41 -04:00
memory-failure.c
hugetlbfs: revert "use i_mmap_rwsem for more pmd sharing synchronization"
2019-01-08 17:15:11 -08:00
memory.c
mm/memory.c: initialise mmu_notifier_range correctly
2019-01-08 17:15:11 -08:00
memory_hotplug.c
mm, memory_hotplug: deobfuscate migration part of offlining
2018-12-28 12:11:50 -08:00
mempolicy.c
Revert "mm, thp: consolidate THP gfp handling into alloc_hugepage_direct_gfpmask"
2018-12-08 10:26:20 -08:00
mempool.c
mm/mempool.c: add missing parameter description
2018-08-22 10:52:44 -07:00
memtest.c
migrate.c
hugetlbfs: revert "use i_mmap_rwsem for more pmd sharing synchronization"
2019-01-08 17:15:11 -08:00
mincore.c
Revert "Change mincore() to count "mapped" pages rather than "cached" pages"
2019-01-24 09:04:37 +13:00
mlock.c
dax: remove VM_MIXEDMAP for fsdax and device dax
2018-08-17 16:20:27 -07:00
mm_init.c
mm: convert totalram_pages and totalhigh_pages variables to atomic
2018-12-28 12:11:47 -08:00
mmap.c
mm/mmap.c: remove verify_mm_writelocked()
2018-12-28 12:11:47 -08:00
mmu_context.c
mmu_gather.c
mm: Replace call_rcu_sched() with call_rcu()
2018-11-27 09:21:46 -08:00
mmu_notifier.c
mm/mmu_notifier: use structure for invalidate_range_start/end calls v2
2018-12-28 12:11:50 -08:00
mmzone.c
mprotect.c
mm/mmu_notifier: use structure for invalidate_range_start/end calls v2
2018-12-28 12:11:50 -08:00
mremap.c
mm: speed up mremap by 20x on large regions
2019-01-04 13:13:48 -08:00
msync.c
nommu.c
mm/gup: cache dev_pagemap while pinning pages
2018-10-26 16:38:15 -07:00
oom_kill.c
mm/mmu_notifier: use structure for invalidate_range_start/end calls v2
2018-12-28 12:11:50 -08:00
page-writeback.c
mm/page-writeback.c: don't break integrity writeback on ->writepage() error
2018-12-28 12:11:49 -08:00
page_alloc.c
Revert "mm, memory_hotplug: initialize struct pages for the full memory section"
2019-01-28 10:35:22 -08:00
page_counter.c
memcg: introduce memory.min
2018-06-07 17:34:36 -07:00
page_ext.c
mm: remove include/linux/bootmem.h
2018-10-31 08:54:16 -07:00
page_idle.c
mm: remove include/linux/bootmem.h
2018-10-31 08:54:16 -07:00
page_io.c
mm/page_io.c: fix polled swap page in
2019-01-04 13:13:48 -08:00
page_isolation.c
mm: only report isolation failures when offlining memory
2018-12-28 12:11:46 -08:00
page_owner.c
mm/page_owner: clamp read count to PAGE_SIZE
2018-12-28 12:11:46 -08:00
page_poison.c
virtio, vhost: fixes, tweaks
2018-11-01 14:42:49 -07:00
page_vma_mapped.c
mm/rmap: map_pte() was not handling private ZONE_DEVICE page properly
2018-10-31 08:54:11 -07:00
pagewalk.c
percpu-internal.h
percpu-km.c
percpu: convert spin_lock_irq to spin_lock_irqsave.
2018-12-18 09:04:08 -08:00
percpu-stats.c
treewide: Use array_size() in vmalloc()
2018-06-12 16:19:22 -07:00
percpu-vm.c
percpu.c
Merge branch 'for-4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu
2018-11-01 09:27:57 -07:00
pgtable-generic.c
x86/mm: Page size aware flush_tlb_mm_range()
2018-10-09 16:51:11 +02:00
process_vm_access.c
quicklist.c
readahead.c
mm/readahead.c: simplify get_next_ra_size()
2018-12-28 12:11:46 -08:00
rmap.c
mm/mmu_notifier: mm/rmap.c: Fix a mmu_notifier range bug in try_to_unmap_one
2019-01-10 02:58:21 -08:00
rodata_test.c
shmem.c
mm: convert totalram_pages and totalhigh_pages variables to atomic
2018-12-28 12:11:47 -08:00
slab.c
slab: alien caches must not be initialized if the allocation of the alien cache failed
2019-01-08 17:15:11 -08:00
slab.h
kasan, mm: change hooks signatures
2018-12-28 12:11:43 -08:00
slab_common.c
A fairly normal cycle for documentation stuff. We have a new
2018-12-29 11:21:49 -08:00
slob.c
slab: __GFP_ZERO is incompatible with a constructor
2018-06-07 17:34:34 -07:00
slub.c
kasan: make tag based mode work with CONFIG_HARDENED_USERCOPY
2019-01-08 17:15:11 -08:00
sparse-vmemmap.c
mm: remove include/linux/bootmem.h
2018-10-31 08:54:16 -07:00
sparse.c
mm, sparse: pass nid instead of pgdat to sparse_add_one_section()
2018-12-28 12:11:49 -08:00
swap.c
fs: don't open code lru_to_page()
2019-01-04 13:13:48 -08:00
swap_cgroup.c
swap_slots.c
mm, swap, get_swap_pages: use entry_size instead of cluster in parameter
2018-08-22 10:52:44 -07:00
swap_state.c
Merge branch 'xarray' of git://git.infradead.org/users/willy/linux-dax
2018-10-28 11:35:40 -07:00
swapfile.c
mm, swap: fix swapoff with KSM pages
2018-12-28 12:11:52 -08:00
truncate.c
mm: cleancache: fix corruption on missed inode invalidation
2018-11-30 14:56:14 -08:00
usercopy.c
mm/usercopy.c: no check page span for stack objects
2019-01-08 17:15:11 -08:00
userfaultfd.c
hugetlbfs: revert "use i_mmap_rwsem for more pmd sharing synchronization"
2019-01-08 17:15:11 -08:00
util.c
mm: page_mapped: don't assume compound page is huge or THP
2019-01-08 17:15:11 -08:00
vmacache.c
mm: get rid of vmacache_flush_all() entirely
2018-09-13 15:18:04 -10:00
vmalloc.c
mm: convert totalram_pages and totalhigh_pages variables to atomic
2018-12-28 12:11:47 -08:00
vmpressure.c
mm/vmpressure.c: convert to use match_string() helper
2018-06-07 17:34:36 -07:00
vmscan.c
mm: put_and_wait_on_page_locked() while page is migrated
2018-12-28 12:11:48 -08:00
vmstat.c
mm: convert zone->managed_pages to atomic variable
2018-12-28 12:11:47 -08:00
workingset.c
mm: convert totalram_pages and totalhigh_pages variables to atomic
2018-12-28 12:11:47 -08:00
z3fold.c
z3fold: fix possible reclaim races
2018-11-18 10:15:09 -08:00
zbud.c
zpool.c
zsmalloc.c
mm/zsmalloc.c: fix fall-through annotation
2018-10-26 16:26:35 -07:00
zswap.c
mm: convert totalram_pages and totalhigh_pages variables to atomic
2018-12-28 12:11:47 -08:00