diff --git a/[refs] b/[refs] index 050f292c5e28..4786c3a4c00d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5bf5f03c271907978489868a4c72aeb42b5127d2 +refs/heads/master: 4e2f07750d9a94e8f23e86408df5ab95be88bf11 diff --git a/trunk/mm/memblock.c b/trunk/mm/memblock.c index a44eab3157f8..eae06ea3aa50 100644 --- a/trunk/mm/memblock.c +++ b/trunk/mm/memblock.c @@ -212,14 +212,15 @@ static int __init_memblock memblock_double_array(struct memblock_type *type) if (use_slab) { new_array = kmalloc(new_size, GFP_KERNEL); addr = new_array ? __pa(new_array) : 0; - } else + } else { addr = memblock_find_in_range(0, MEMBLOCK_ALLOC_ACCESSIBLE, new_size, sizeof(phys_addr_t)); + new_array = addr ? __va(addr) : 0; + } if (!addr) { pr_err("memblock: Failed to double %s array from %ld to %ld entries !\n", memblock_type_name(type), type->max, type->max * 2); return -1; } - new_array = __va(addr); memblock_dbg("memblock: %s array is doubled to %ld at [%#010llx-%#010llx]", memblock_type_name(type), type->max * 2, (u64)addr, (u64)addr + new_size - 1);