| .. | .. |
|---|
| 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); |
|---|