patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / arch / ppc64 / mm / hugetlbpage.c
index d17c903..9416e53 100644 (file)
@@ -24,7 +24,6 @@
 #include <asm/machdep.h>
 #include <asm/cputable.h>
 #include <asm/tlb.h>
-#include <asm/rmap.h>
 
 #include <linux/sysctl.h>
 
@@ -215,7 +214,7 @@ static int prepare_low_seg_for_htlb(struct mm_struct *mm, unsigned long seg)
                }
                page = pmd_page(*pmd);
                pmd_clear(pmd);
-               pgtable_remove_rmap(page);
+               dec_page_state(nr_page_table_pages);
                pte_free_tlb(tlb, page);
        }
        tlb_finish_mmu(tlb, start, end);
@@ -455,8 +454,9 @@ int hugetlb_prefault(struct address_space *mapping, struct vm_area_struct *vma)
                                goto out;
                        }
                        ret = add_to_page_cache(page, mapping, idx, GFP_ATOMIC);
-                       unlock_page(page);
-                       if (ret) {
+                       if (! ret) {
+                               unlock_page(page);
+                       } else {
                                hugetlb_put_quota(mapping);
                                free_huge_page(page);
                                goto out;