--- linux-2.6.10.orig/mm/page_alloc.c   2004-12-25 05:33:51.000000000 +0800
+++ linux-2.6.10/mm/page_alloc.c        2005-01-21 11:43:44.000000000 +0800
@@ -788,7 +788,22 @@
 
 fastcall void __free_pages(struct page *page, unsigned int order)
 {
-       if (!PageReserved(page) && put_page_testzero(page)) {
+       if (!PageReserved(page)) {
+#ifdef CONFIG_MMU
+               if (!put_page_testzero(page))
+                       return;
+#else
+               int i, result = 1;
+
+               /*
+                * We need to de-reference all the pages for this order -- see
set_page_refs()
+                */
+                for (i = 0; i < (1 << order); i++)
+                        result &= put_page_testzero(page+i);
+                if (!result)
+                        BUG();
+#endif /* CONFIG_MMU */
+
                if (order == 0)
                        free_hot_page(page);
                else


-- 
Rongkai Zhan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to