aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index a82b303c19b1..13cf4c665321 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1724,6 +1724,19 @@ static bool check_new_pages(struct page *page, unsigned int order)
1724 return false; 1724 return false;
1725} 1725}
1726 1726
1727inline void post_alloc_hook(struct page *page, unsigned int order,
1728 gfp_t gfp_flags)
1729{
1730 set_page_private(page, 0);
1731 set_page_refcounted(page);
1732
1733 arch_alloc_page(page, order);
1734 kernel_map_pages(page, 1 << order, 1);
1735 kernel_poison_pages(page, 1 << order, 1);
1736 kasan_alloc_pages(page, order);
1737 set_page_owner(page, order, gfp_flags);
1738}
1739
1727static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags, 1740static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags,
1728 unsigned int alloc_flags) 1741 unsigned int alloc_flags)
1729{ 1742{
@@ -1736,13 +1749,7 @@ static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags
1736 poisoned &= page_is_poisoned(p); 1749 poisoned &= page_is_poisoned(p);
1737 } 1750 }
1738 1751
1739 set_page_private(page, 0); 1752 post_alloc_hook(page, order, gfp_flags);
1740 set_page_refcounted(page);
1741
1742 arch_alloc_page(page, order);
1743 kernel_map_pages(page, 1 << order, 1);
1744 kernel_poison_pages(page, 1 << order, 1);
1745 kasan_alloc_pages(page, order);
1746 1753
1747 if (!free_pages_prezeroed(poisoned) && (gfp_flags & __GFP_ZERO)) 1754 if (!free_pages_prezeroed(poisoned) && (gfp_flags & __GFP_ZERO))
1748 for (i = 0; i < (1 << order); i++) 1755 for (i = 0; i < (1 << order); i++)
@@ -1751,8 +1758,6 @@ static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags
1751 if (order && (gfp_flags & __GFP_COMP)) 1758 if (order && (gfp_flags & __GFP_COMP))
1752 prep_compound_page(page, order); 1759 prep_compound_page(page, order);
1753 1760
1754 set_page_owner(page, order, gfp_flags);
1755
1756 /* 1761 /*
1757 * page is set pfmemalloc when ALLOC_NO_WATERMARKS was necessary to 1762 * page is set pfmemalloc when ALLOC_NO_WATERMARKS was necessary to
1758 * allocate the page. The expectation is that the caller is taking 1763 * allocate the page. The expectation is that the caller is taking