struct memblock_type *type = &memblock.memory;
        unsigned int right = type->cnt;
        unsigned int mid, left = 0;
-       phys_addr_t addr = PFN_PHYS(pfn + 1);
+       phys_addr_t addr = PFN_PHYS(++pfn);
 
        do {
                mid = (right + left) / 2;
                                  type->regions[mid].size))
                        left = mid + 1;
                else {
-                       /* addr is within the region, so pfn + 1 is valid */
-                       return min(pfn + 1, max_pfn);
+                       /* addr is within the region, so pfn is valid */
+                       return pfn;
                }
        } while (left < right);
 
        if (right == type->cnt)
-               return max_pfn;
+               return -1UL;
        else
-               return min(PHYS_PFN(type->regions[right].base), max_pfn);
+               return PHYS_PFN(type->regions[right].base);
 }
 
 /**