aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm/page_alloc.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 8404b36794ce..f0617cf88706 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -4557,8 +4557,14 @@ void page_frag_free(void *addr)
4557{ 4557{
4558 struct page *page = virt_to_head_page(addr); 4558 struct page *page = virt_to_head_page(addr);
4559 4559
4560 if (unlikely(put_page_testzero(page))) 4560 if (unlikely(put_page_testzero(page))) {
4561 __free_pages_ok(page, compound_order(page)); 4561 unsigned int order = compound_order(page);
4562
4563 if (order == 0) /* Via pcp? */
4564 free_unref_page(page);
4565 else
4566 __free_pages_ok(page, order);
4567 }
4562} 4568}
4563EXPORT_SYMBOL(page_frag_free); 4569EXPORT_SYMBOL(page_frag_free);
4564 4570