.. | .. |
---|
188 | 188 | unsigned long nr_pfn = page_size / sizeof(struct page); |
---|
189 | 189 | unsigned long start_pfn = page_to_pfn((struct page *)start); |
---|
190 | 190 | |
---|
191 | | - if ((start_pfn + nr_pfn) > altmap->end_pfn) |
---|
| 191 | + if ((start_pfn + nr_pfn - 1) > altmap->end_pfn) |
---|
192 | 192 | return true; |
---|
193 | 193 | |
---|
194 | 194 | if (start_pfn < altmap->base_pfn) |
---|
.. | .. |
---|
313 | 313 | start = ALIGN_DOWN(start, page_size); |
---|
314 | 314 | if (altmap) { |
---|
315 | 315 | alt_start = altmap->base_pfn; |
---|
316 | | - alt_end = altmap->base_pfn + altmap->reserve + |
---|
317 | | - altmap->free + altmap->alloc + altmap->align; |
---|
| 316 | + alt_end = altmap->base_pfn + altmap->reserve + altmap->free; |
---|
318 | 317 | } |
---|
319 | 318 | |
---|
320 | 319 | pr_debug("vmemmap_free %lx...%lx\n", start, end); |
---|