diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d711dcdda362..be18ccd017bb 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -5206,25 +5206,26 @@ early_param("movablecore", cmdline_parse_movablecore); | |||
5206 | 5206 | ||
5207 | #endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */ | 5207 | #endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */ |
5208 | 5208 | ||
5209 | unsigned long free_reserved_area(unsigned long start, unsigned long end, | 5209 | unsigned long free_reserved_area(void *start, void *end, int poison, char *s) |
5210 | int poison, char *s) | ||
5211 | { | 5210 | { |
5212 | unsigned long pages, pos; | 5211 | void *pos; |
5212 | unsigned long pages = 0; | ||
5213 | 5213 | ||
5214 | pos = start = PAGE_ALIGN(start); | 5214 | start = (void *)PAGE_ALIGN((unsigned long)start); |
5215 | end &= PAGE_MASK; | 5215 | end = (void *)((unsigned long)end & PAGE_MASK); |
5216 | for (pages = 0; pos < end; pos += PAGE_SIZE, pages++) { | 5216 | for (pos = start; pos < end; pos += PAGE_SIZE, pages++) { |
5217 | if (poison) | 5217 | if (poison) |
5218 | memset((void *)pos, poison, PAGE_SIZE); | 5218 | memset(pos, poison, PAGE_SIZE); |
5219 | free_reserved_page(virt_to_page((void *)pos)); | 5219 | free_reserved_page(virt_to_page(pos)); |
5220 | } | 5220 | } |
5221 | 5221 | ||
5222 | if (pages && s) | 5222 | if (pages && s) |
5223 | pr_info("Freeing %s memory: %ldK (%lx - %lx)\n", | 5223 | pr_info("Freeing %s memory: %ldK (%p - %p)\n", |
5224 | s, pages << (PAGE_SHIFT - 10), start, end); | 5224 | s, pages << (PAGE_SHIFT - 10), start, end); |
5225 | 5225 | ||
5226 | return pages; | 5226 | return pages; |
5227 | } | 5227 | } |
5228 | EXPORT_SYMBOL(free_reserved_area); | ||
5228 | 5229 | ||
5229 | #ifdef CONFIG_HIGHMEM | 5230 | #ifdef CONFIG_HIGHMEM |
5230 | void free_highmem_page(struct page *page) | 5231 | void free_highmem_page(struct page *page) |