diff -puN a/agpgart_be.c b/agpgart_be.c
--- a/agpgart_be.c	2004-05-06 22:51:27.000000000 -0400
+++ b/agpgart_be.c	2004-06-17 12:44:19.000000000 -0400
@@ -1402,7 +1402,7 @@ unsigned long agp_generic_alloc_page(voi
     }
 #endif
 
-    atomic_inc(&page->count);
+    get_page(page);
     set_bit(PG_locked, &page->flags);
     atomic_inc(&agp_bridge.current_memory_agp);
 
@@ -1449,7 +1449,7 @@ void agp_generic_destroy_page(unsigned l
     put_page(page);
     UnlockPage(page);
 #else /* AGPGART_2_4_19 */
-    atomic_dec(&page->count);                                                 
+    __put_page(page);                                                 
     clear_bit(PG_locked, &page->flags);                                       
     wake_up(&page->wait);                                                     
 #endif /* AGPGART_2_4_19 */
@@ -4413,7 +4413,7 @@ static unsigned long ali_alloc_page(void
     if (page == NULL)
         return 0;
 
-    atomic_inc(&page->count);
+    get_page(page);
     set_bit(PG_locked, &page->flags);
     atomic_inc(&agp_bridge.current_memory_agp);
 
@@ -4509,7 +4509,7 @@ static void ali_destroy_page(unsigned lo
     put_page(page);
     UnlockPage(page);
 #else /* AGPGART_2_4_19 */
-    atomic_dec(&page->count);
+    __put_page(page);
     clear_bit(PG_locked, &page->flags);
     wake_up(&page->wait);
 #endif /* AGPGART_2_4_19 */
diff -puN a/firegl_public.c b/firegl_public.c
--- a/firegl_public.c	2004-03-17 17:00:29.000000000 -0500
+++ b/firegl_public.c	2004-06-17 12:44:54.000000000 -0400
@@ -2010,7 +2010,7 @@ static __inline__ vm_nopage_ret_t do_vm_
     pMmPage = virt_to_page(kaddr);
 #endif /* LINUX_VERSION_CODE < 0x020400 */
 
-    atomic_inc(&(pMmPage->count));  /* inc usage count of page */
+    get_page(pMmPage);  /* inc usage count of page */
 
 #if LINUX_VERSION_CODE >= 0x020400
   //  __KE_DEBUG3("vm-address 0x%08lx => kernel-page-address 0x%p\n",
@@ -2052,7 +2052,7 @@ static __inline__ vm_nopage_ret_t do_vm_
     // Don't increment page usage count, cause ctx pages are allocated
     // with drm_alloc_pages, which marks all pages as reserved. Reserved
     // pages' usage count is not decremented by the kernel during unmap!!!
-    atomic_inc(&(pMmPage->count)); /* inc usage count of page */
+    get_page(pMmPage); /* inc usage count of page */
 #endif
 
 #if LINUX_VERSION_CODE >= 0x020400
