aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2008-05-14 16:05:40 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-05-14 19:11:14 -0700
commitc3723ca3874a8fc2218c4726d57e3a7da9e83e47 (patch)
treed7aa49e6ce3d10bcab1a79e3045425dad6906c40 /mm
parent3b7ec117bf6c98f5a845311c4ca5ca020a3d7689 (diff)
downloadkernel_samsung_espresso10-c3723ca3874a8fc2218c4726d57e3a7da9e83e47.zip
kernel_samsung_espresso10-c3723ca3874a8fc2218c4726d57e3a7da9e83e47.tar.gz
kernel_samsung_espresso10-c3723ca3874a8fc2218c4726d57e3a7da9e83e47.tar.bz2
memory hotplug: memmap_init_zone called twice
__add_zone calls memmap_init_zone twice if memory gets attached to an empty zone. Once via init_currently_empty_zone and once explictly right after that call. Looks like this is currently not a bug, however the call is superfluous and might lead to subtle bugs if memmap_init_zone gets changed. So make sure it is called only once. Cc: Yasunori Goto <y-goto@jp.fujitsu.com> Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Dave Hansen <haveblue@us.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/memory_hotplug.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index b17dca7..988bd91 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -167,13 +167,9 @@ static int __add_zone(struct zone *zone, unsigned long phys_start_pfn)
int zone_type;
zone_type = zone - pgdat->node_zones;
- if (!zone->wait_table) {
- int ret = 0;
- ret = init_currently_empty_zone(zone, phys_start_pfn,
- nr_pages, MEMMAP_HOTPLUG);
- if (ret < 0)
- return ret;
- }
+ if (!zone->wait_table)
+ return init_currently_empty_zone(zone, phys_start_pfn,
+ nr_pages, MEMMAP_HOTPLUG);
memmap_init_zone(nr_pages, nid, zone_type,
phys_start_pfn, MEMMAP_HOTPLUG);
return 0;