--- 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:46:58.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


On Fri, 21 Jan 2005 11:40:52 +0800, zhan rongkai <[EMAIL PROTECTED]> wrote:
> --- 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
> 


-- 
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