Heiko Carstens
76cdd58e55
memory_hotplug: always initialize pageblock bitmap
...
Trying to online a new memory section that was added via memory hotplug
sometimes results in crashes when the new pages are added via __free_page.
Reason for that is that the pageblock bitmap isn't initialized and hence
contains random stuff. That means that get_pageblock_migratetype()
returns also random stuff and therefore
list_add(&page->lru,
&zone->free_area[order].free_list[migratetype]);
in __free_one_page() tries to do a list_add to something that isn't even
necessarily a list.
This happens since 86051ca5ea ("mm: fix
usemap initialization") which makes sure that the pageblock bitmap gets
only initialized for pages present in a zone. Unfortunately for hot-added
memory the zones "grow" after the memmap and the pageblock memmap have
been initialized. Which means that the new pages have an unitialized
bitmap. To solve this the calls to grow_zone_span() and grow_pgdat_span()
are moved to __add_zone() just before the initialization happens.
The patch also moves the two functions since __add_zone() is the only
caller and I didn't want to add a forward declaration.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Andy Whitcroft <apw@shadowen.org>
Cc: Dave Hansen <haveblue@us.ibm.com>
Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Yasunori Goto <y-goto@jp.fujitsu.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-05-14 19:11:15 -07:00
..
allocpercpu.c
cpumask: Cleanup more uses of CPU_MASK and NODE_MASK
2008-04-19 19:44:58 +02:00
backing-dev.c
mm: bdi: move statistics to debugfs
2008-04-30 08:29:50 -07:00
bootmem.c
memory hotplug: make alloc_bootmem_section()
2008-04-28 08:58:25 -07:00
bounce.c
block: Initial support for data-less (or empty) barrier support
2007-10-16 11:03:56 +02:00
dmapool.c
dmapool: enable debugging for CONFIG_SLUB_DEBUG_ON too
2008-04-28 08:58:20 -07:00
fadvise.c
xip: support non-struct page backed memory
2008-04-28 08:58:23 -07:00
filemap.c
mm: fix infinite loop in filemap_fault
2008-05-14 19:11:13 -07:00
filemap_xip.c
xip: support non-struct page backed memory
2008-04-28 08:58:23 -07:00
fremap.c
mm: fix various kernel-doc comments
2008-03-19 18:53:35 -07:00
highmem.c
mm: highmem kernel-doc additions
2008-03-19 18:53:35 -07:00
hugetlb.c
page allocator: explicitly retry hugepage allocations
2008-04-29 08:05:58 -07:00
internal.h
memory hotplug: free memmaps allocated by bootmem
2008-04-28 08:58:26 -07:00
Kconfig
PAGEFLAGS_EXTENDED and separate page flags for Head and Tail
2008-04-28 08:58:22 -07:00
maccess.c
kgdb: fix optional arch functions and probe_kernel_*
2008-04-17 20:05:39 +02:00
madvise.c
xip: support non-struct page backed memory
2008-04-28 08:58:23 -07:00
Makefile
uaccess: add probe_kernel_write()
2008-04-17 20:05:36 +02:00
memcontrol.c
memcg: simple stats for memory resource controller
2008-05-01 08:04:02 -07:00
memory.c
fix SMP data race in pagetable setup vs walking
2008-05-14 10:05:18 -07:00
memory_hotplug.c
memory_hotplug: always initialize pageblock bitmap
2008-05-14 19:11:15 -07:00
mempolicy.c
mempolicy: use struct mempolicy pointer in shmem_sb_info
2008-04-28 08:58:25 -07:00
mempool.c
spelling fixes: mm/
2007-10-20 01:27:18 +02:00
migrate.c
mm: fix warning on memory offline
2008-04-30 08:29:55 -07:00
mincore.c
mm: remove nopage
2008-04-28 08:58:18 -07:00
mlock.c
do not limit locked memory when RLIMIT_MEMLOCK is RLIM_INFINITY
2007-07-16 09:05:37 -07:00
mmap.c
procfs task exe symlink
2008-04-29 08:06:17 -07:00
mmzone.c
mm: filter based on a nodemask as well as a gfp_mask
2008-04-28 08:58:19 -07:00
mprotect.c
mprotect: prevent alteration of the PAT bits
2008-05-14 19:11:15 -07:00
mremap.c
sparse pointer use of zero as null
2007-10-18 14:37:31 -07:00
msync.c
Detach sched.h from mm.h
2007-05-21 09:18:19 -07:00
nommu.c
procfs task exe symlink
2008-04-29 08:06:17 -07:00
oom_kill.c
oom_kill: remove unused parameter in badness()
2008-04-28 08:58:26 -07:00
page-writeback.c
mm: Add NR_WRITEBACK_TEMP counter
2008-04-30 08:29:50 -07:00
page_alloc.c
memory_hotplug: always initialize pageblock bitmap
2008-05-14 19:11:15 -07:00
page_io.c
mm: fix PageUptodate data race
2008-02-05 09:44:19 -08:00
page_isolation.c
memory hotremove: unset migrate type "ISOLATE" after removal
2007-11-14 18:45:38 -08:00
pagewalk.c
mm: fix possible off-by-one in walk_pte_range()
2008-04-28 08:58:16 -07:00
pdflush.c
mm/pdflush.c: merge the same code in two path
2008-05-13 08:02:24 -07:00
prio_tree.c
spelling fixes: mm/
2007-10-20 01:27:18 +02:00
quicklist.c
quicklists: Only consider memory that can be used with GFP_KERNEL
2008-01-14 08:52:22 -08:00
readahead.c
mm: bdi: export BDI attributes in sysfs
2008-04-30 08:29:49 -07:00
rmap.c
mm: remove nopage
2008-04-28 08:58:18 -07:00
shmem.c
mm: bdi: add separate writeback accounting capability
2008-04-30 08:29:50 -07:00
shmem_acl.c
[PATCH] Fix typos in mm/shmem_acl.c
2006-10-11 11:14:23 -07:00
slab.c
mm: remove remaining __FUNCTION__ occurrences
2008-04-30 08:29:53 -07:00
slob.c
slob: fix bug - when slob allocates "struct kmem_cache", it does not force alignment.
2008-04-27 18:25:51 +03:00
slub.c
slub: fix atomic usage in any_slab_objects()
2008-05-08 10:46:56 -07:00
sparse-vmemmap.c
NULL noise: fs/*, mm/*, kernel/*
2008-03-30 14:18:41 -07:00
sparse.c
revert "memory hotplug: allocate usemap on the section with pgdat"
2008-04-30 08:29:55 -07:00
swap.c
mm: rotate_reclaimable_page() cleanup
2008-04-28 08:58:20 -07:00
swap_state.c
mm: bdi: add separate writeback accounting capability
2008-04-30 08:29:50 -07:00
swapfile.c
mm: use non-racy method for /proc/swaps creation
2008-04-29 08:06:20 -07:00
thrash.c
Bug in mm/thrash.c function grab_swap_token()
2007-05-11 08:29:32 -07:00
tiny-shmem.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2008-03-25 08:57:47 -07:00
truncate.c
fix invalidate_inode_pages2_range() to not clear ret
2008-04-28 08:58:18 -07:00
util.c
fix mm/util.c:krealloc()
2007-11-14 18:45:41 -08:00
vmalloc.c
docbook: fix vmalloc missing parameter notation
2008-05-01 08:03:59 -07:00
vmscan.c
mm: remove remaining __FUNCTION__ occurrences
2008-04-30 08:29:53 -07:00
vmstat.c
make vmstat cpu-unplug safe
2008-05-13 08:02:23 -07:00