diff options
-rw-r--r-- | mm/memory_hotplug.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 57decb29e056..c916582591eb 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c | |||
@@ -705,8 +705,10 @@ EXPORT_SYMBOL_GPL(__add_pages); | |||
705 | int __remove_pages(struct zone *zone, unsigned long phys_start_pfn, | 705 | int __remove_pages(struct zone *zone, unsigned long phys_start_pfn, |
706 | unsigned long nr_pages) | 706 | unsigned long nr_pages) |
707 | { | 707 | { |
708 | unsigned long i, ret = 0; | 708 | unsigned long i; |
709 | int sections_to_remove; | 709 | int sections_to_remove; |
710 | resource_size_t start, size; | ||
711 | int ret = 0; | ||
710 | 712 | ||
711 | /* | 713 | /* |
712 | * We can only remove entire sections | 714 | * We can only remove entire sections |
@@ -714,7 +716,12 @@ int __remove_pages(struct zone *zone, unsigned long phys_start_pfn, | |||
714 | BUG_ON(phys_start_pfn & ~PAGE_SECTION_MASK); | 716 | BUG_ON(phys_start_pfn & ~PAGE_SECTION_MASK); |
715 | BUG_ON(nr_pages % PAGES_PER_SECTION); | 717 | BUG_ON(nr_pages % PAGES_PER_SECTION); |
716 | 718 | ||
717 | release_mem_region(phys_start_pfn << PAGE_SHIFT, nr_pages * PAGE_SIZE); | 719 | start = phys_start_pfn << PAGE_SHIFT; |
720 | size = nr_pages * PAGE_SIZE; | ||
721 | ret = release_mem_region_adjustable(&iomem_resource, start, size); | ||
722 | if (ret) | ||
723 | pr_warn("Unable to release resource <%016llx-%016llx> (%d)\n", | ||
724 | start, start + size - 1, ret); | ||
718 | 725 | ||
719 | sections_to_remove = nr_pages / PAGES_PER_SECTION; | 726 | sections_to_remove = nr_pages / PAGES_PER_SECTION; |
720 | for (i = 0; i < sections_to_remove; i++) { | 727 | for (i = 0; i < sections_to_remove; i++) { |