VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / arch / i386 / mm / pageattr.c
index 04b488c..8eb95be 100644 (file)
@@ -17,7 +17,7 @@ static spinlock_t cpa_lock = SPIN_LOCK_UNLOCKED;
 static struct list_head df_list = LIST_HEAD_INIT(df_list);
 
 
-static inline pte_t *lookup_address(unsigned long address) 
+pte_t *lookup_address(unsigned long address) 
 { 
        pgd_t *pgd = pgd_offset_k(address); 
        pmd_t *pmd;
@@ -121,20 +121,20 @@ __change_page_attr(struct page *page, pgprot_t prot)
                        pte_t standard = mk_pte(page, PAGE_KERNEL); 
                        set_pte_atomic(kpte, mk_pte(page, prot)); 
                        if (pte_same(old,standard))
-                               atomic_inc(&kpte_page->count);
+                               get_page(kpte_page);
                } else {
                        struct page *split = split_large_page(address, prot); 
                        if (!split)
                                return -ENOMEM;
-                       atomic_inc(&kpte_page->count);
+                       get_page(kpte_page);
                        set_pmd_pte(kpte,address,mk_pte(split, PAGE_KERNEL));
                }       
        } else if ((pte_val(*kpte) & _PAGE_PSE) == 0) { 
                set_pte_atomic(kpte, mk_pte(page, PAGE_KERNEL));
-               atomic_dec(&kpte_page->count); 
+               __put_page(kpte_page);
        }
 
-       if (cpu_has_pse && (atomic_read(&kpte_page->count) == 1)) { 
+       if (cpu_has_pse && (page_count(kpte_page) == 1)) {
                list_add(&kpte_page->lru, &df_list);
                revert_page(kpte_page, address);
        }