From: Michael Ellerman Date: Wed, 25 Jan 2006 08:31:25 +0000 (+1300) Subject: [PATCH] powerpc: Don't allocate zero bytes in finish_device_tree() X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=fa93895329b87112cb1fd784db969e60b5b46af6;p=openwrt%2Fstaging%2Fblogic.git [PATCH] powerpc: Don't allocate zero bytes in finish_device_tree() In prom.c we run finish_node() on allnodes twice. The first time we just calculate how much memory we'll need, the second time we do the actual work. If the calculation stage determines that we need 0 bytes, then we should skip the lmb allocation. Although an alloc of zero will work, it has been seen to lead to a BUG_ON() in reserve_bootmem() on at least one machine. Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras --- diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index d50c8df0183e..535a33e4aa37 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c @@ -491,7 +491,12 @@ void __init finish_device_tree(void) size = 16; finish_node(allnodes, &size, 1); size -= 16; - end = start = (unsigned long) __va(lmb_alloc(size, 128)); + + if (0 == size) + end = start = 0; + else + end = start = (unsigned long)__va(lmb_alloc(size, 128)); + finish_node(allnodes, &end, 0); BUG_ON(end != start + size);