X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;ds=sidebyside;f=mm%2Fmemblock.c;h=77b5f227e1d86d9228ae6a67f52f18418a2beb98;hb=e2bc96aeff3c32534c01229ea365f2db6ea0cb74;hp=2f55f19b7c86517bb5b23680c1b062f7efe2795a;hpb=8b0f6d12de91345190f234edba781b2fd03257b6;p=cascardo%2Flinux.git diff --git a/mm/memblock.c b/mm/memblock.c index 2f55f19b7c86..77b5f227e1d8 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -106,14 +106,17 @@ phys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t start, if (end == MEMBLOCK_ALLOC_ACCESSIBLE) end = memblock.current_limit; - /* adjust @start to avoid underflow and allocating the first page */ - start = max3(start, size, (phys_addr_t)PAGE_SIZE); + /* avoid allocating the first page */ + start = max_t(phys_addr_t, start, PAGE_SIZE); end = max(start, end); for_each_free_mem_range_reverse(i, nid, &this_start, &this_end, NULL) { this_start = clamp(this_start, start, end); this_end = clamp(this_end, start, end); + if (this_end < size) + continue; + cand = round_down(this_end - size, align); if (cand >= this_start) return cand;