Re: [PATCH] __free_pages_ok oops

From: Rik van Riel (riel@conectiva.com.br)
Date: Thu Feb 07 2002 - 07:44:49 EST


On Thu, 7 Feb 2002, David S. Miller wrote:
> From: Rik van Riel <riel@conectiva.com.br>
> Date: Thu, 7 Feb 2002 10:34:20 -0200 (BRST)
>
> Actually, at this point we _know_ page->list.{prev,next} are
> NULL.
>
> We can use this to add the pages to a special list, from where
> __alloc_pages() and kswapd can move them to the free list, in
> process context.
>
> I don't think there should be any special logic on how to free a page
> outside of the page allocator itself. Certainly this kind of stuff
> doesn't belong in the networking.
>
> Pages can be freed from arbitrary contexts, and the page allocator
> should be the part the knows how to deal with it.
>
> Maybe I don't understand and you're really suggesting something else.

The mechanism to do what I described above should of course be
in __free_pages_ok().

if (PageLRU(page)) {
        if (in_interrupt()) {
                add_page_to_special_list(page);
                return;
        } else
                lru_cache_del(page);
}

Rik

-- 
"Linux holds advantages over the single-vendor commercial OS"
    -- Microsoft's "Competing with Linux" document

http://www.surriel.com/ http://distro.conectiva.com/

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



This archive was generated by hypermail 2b29 : Thu Feb 07 2002 - 21:01:01 EST