diff --git a/mm/internal.h b/mm/internal.h
index 858ad01864dc26aedd096c6f9ae37a7f72b91400..1f43f7416972d3c4f1b07ab04898008a8ec76a81 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -16,6 +16,8 @@
 void free_pgtables(struct mmu_gather *tlb, struct vm_area_struct *start_vma,
 		unsigned long floor, unsigned long ceiling);
 
+extern void prep_compound_page(struct page *page, unsigned long order);
+
 static inline void set_page_count(struct page *page, int v)
 {
 	atomic_set(&page->_count, v);
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index e43aae135b38e3972bd3c06691a9ce8777c56f47..eaa86671ebbd73ddda78dc96d293ecf6105671b0 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -264,7 +264,7 @@ static void free_compound_page(struct page *page)
 	__free_pages_ok(page, compound_order(page));
 }
 
-static void prep_compound_page(struct page *page, unsigned long order)
+void prep_compound_page(struct page *page, unsigned long order)
 {
 	int i;
 	int nr_pages = 1 << order;