On Thu, Oct 06, 2005 at 15:07:50 +1300, Xiangfei Jia wrote:
> I'm using an array to hold number of pages. The array is allocated using
> vmalloc
Using vmalloc? So it's a large array. Thousands of entries, right?
^
> and each page is allocated by get_free_page(GFP_ATOMIC). And after
^
You are NOT using get_free_pages, right?
^
> use, the number of pages are free-ed by __free_page().
Do you check that get_free_page actually returns non-NULL? It is hell lot
likely to return NULL in GFP_ATOMIC mode. That mode is simply not reliable --
you must live with it.
> The system works fine if the array of pages are allocated for the first time
> since the system started running. If I try to allocate the same amount of
> pages for the second time, the system will crash. Even if I try to allocate
> less pages, the system still crashes. It seems to me that the the pages been
> allocated are not really free-ed. Or maybe due to some other problems. Can
> someone help me with this. Really appropriated!!
Not really. Memory allocation is a tricky area. You need to show the real
code. Not just explanation -- actual code that does not work for you.
--
Jan 'Bulb' Hudec <bulb@xxxxxx>
Attachment:
signature.asc
Description: Digital signature