[PATCH] powerpc: Don't allocate zero bytes in finish_device_tree()
authorMichael Ellerman <michael@ellerman.id.au>
Wed, 25 Jan 2006 08:31:25 +0000 (21:31 +1300)
committerPaul Mackerras <paulus@samba.org>
Tue, 7 Feb 2006 10:28:38 +0000 (21:28 +1100)
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 <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/prom.c

index d50c8df0183e524283ea966ccc728b4b1025676e..535a33e4aa37b9f8a9e0a4fd1b6ae72d7c99f0c3 100644 (file)
@@ -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);