]> Pileus Git - ~andy/linux/blobdiff - mm/nobootmem.c
mm/nobootmem: free_all_bootmem again
[~andy/linux] / mm / nobootmem.c
index 17c89023184f1e49f6a74415b5850851143f1099..f73f2987a8523f0e40c51154b9a53ac748f476d3 100644 (file)
@@ -116,23 +116,26 @@ static unsigned long __init __free_memory_core(phys_addr_t start,
 static unsigned long __init free_low_memory_core_early(void)
 {
        unsigned long count = 0;
-       phys_addr_t start, end, size;
+       phys_addr_t start, end;
        u64 i;
 
        for_each_free_mem_range(i, NUMA_NO_NODE, &start, &end, NULL)
                count += __free_memory_core(start, end);
 
-       /* Free memblock.reserved array if it was allocated */
-       size = get_allocated_memblock_reserved_regions_info(&start);
-       if (size)
-               count += __free_memory_core(start, start + size);
-
 #ifdef CONFIG_ARCH_DISCARD_MEMBLOCK
-
-       /* Free memblock.memory array if it was allocated */
-       size = get_allocated_memblock_memory_regions_info(&start);
-       if (size)
-               count += __free_memory_core(start, start + size);
+       {
+               phys_addr_t size;
+
+               /* Free memblock.reserved array if it was allocated */
+               size = get_allocated_memblock_reserved_regions_info(&start);
+               if (size)
+                       count += __free_memory_core(start, start + size);
+
+               /* Free memblock.memory array if it was allocated */
+               size = get_allocated_memblock_memory_regions_info(&start);
+               if (size)
+                       count += __free_memory_core(start, start + size);
+       }
 #endif
 
        return count;