memblock: make memblock_find_in_range method private
[linux-2.6-microblaze.git] / drivers / of / of_reserved_mem.c
index fd3964d..59c1390 100644 (file)
@@ -33,18 +33,22 @@ static int __init early_init_dt_alloc_reserved_memory_arch(phys_addr_t size,
        phys_addr_t *res_base)
 {
        phys_addr_t base;
+       int err = 0;
 
        end = !end ? MEMBLOCK_ALLOC_ANYWHERE : end;
        align = !align ? SMP_CACHE_BYTES : align;
-       base = memblock_find_in_range(start, end, size, align);
+       base = memblock_phys_alloc_range(size, align, start, end);
        if (!base)
                return -ENOMEM;
 
        *res_base = base;
-       if (nomap)
-               return memblock_mark_nomap(base, size);
+       if (nomap) {
+               err = memblock_mark_nomap(base, size);
+               if (err)
+                       memblock_free(base, size);
+       }
 
-       return memblock_reserve(base, size);
+       return err;
 }
 
 /*