diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index a662c74a0f5df30f7a3d116fd98e54c2cb77688a..d711dcdda36275d82c09e7d72267ad00586d41ff 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -6185,6 +6185,10 @@ __offline_isolated_pages(unsigned long start_pfn, unsigned long end_pfn)
 		list_del(&page->lru);
 		rmv_page_order(page);
 		zone->free_area[order].nr_free--;
+#ifdef CONFIG_HIGHMEM
+		if (PageHighMem(page))
+			totalhigh_pages -= 1 << order;
+#endif
 		for (i = 0; i < (1 << order); i++)
 			SetPageReserved((page+i));
 		pfn += (1 << order);