[PATCH] remove hugetlb_clean_stale_pgtable() and fix huge_pte_alloc()
[deliverable/linux.git] / arch / i386 / mm / hugetlbpage.c
index 24c8a536b58829db0200f4be494edcff45f36bc1..d524127c9afc3b2f92b3e5ad6b3dbce20bec42f7 100644 (file)
@@ -22,20 +22,14 @@ pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
 {
        pgd_t *pgd;
        pud_t *pud;
-       pmd_t *pmd;
        pte_t *pte = NULL;
 
        pgd = pgd_offset(mm, addr);
        pud = pud_alloc(mm, pgd, addr);
-       pmd = pmd_alloc(mm, pud, addr);
+       if (pud)
+               pte = (pte_t *) pmd_alloc(mm, pud, addr);
+       BUG_ON(pte && !pte_none(*pte) && !pte_huge(*pte));
 
-       if (!pmd)
-               goto out;
-
-       pte = (pte_t *) pmd;
-       if (!pte_none(*pte) && !pte_huge(*pte))
-               hugetlb_clean_stale_pgtable(pte);
-out:
        return pte;
 }
 
@@ -130,17 +124,6 @@ follow_huge_pmd(struct mm_struct *mm, unsigned long address,
 }
 #endif
 
-void hugetlb_clean_stale_pgtable(pte_t *pte)
-{
-       pmd_t *pmd = (pmd_t *) pte;
-       struct page *page;
-
-       page = pmd_page(*pmd);
-       pmd_clear(pmd);
-       dec_page_state(nr_page_table_pages);
-       page_cache_release(page);
-}
-
 /* x86_64 also uses this file */
 
 #ifdef HAVE_ARCH_HUGETLB_UNMAPPED_AREA
This page took 0.028082 seconds and 5 git commands to generate.