hi,
I am writing a driver for 2.6 in which i am locking down some pages
into the physical memory by manually traversing the page tables. After
my work with those pages is finished, i free them using
__free_page(). For some cases it is running fine. But while running
some applications, i got the following error:
Bad page state at free_hot_cold_page (in process 'data_lat', page
0000010003d208e8)
flags:0x01000074 mapping:0000000000000000 mapcount:0 count:0
Backtrace:
Call Trace:<ffffffff801571f7>{bad_page+112}
<ffffffff801578cf>{free_hot_cold_page+130}
<ffffffffa01aa101>{:ccp3k:VipkUnmapAndUnlock+162}
<ffffffffa01aaba0>{:ccp3k:VipkCloseNic+638}
<ffffffffa01a812d>{:ccp3k:VipkClose+30} <ffffffff80173117>{__fput+99}
<ffffffff80171d55>{filp_close+103}
<ffffffff80137771>{put_files_struct+101}
<ffffffff80137f76>{do_exit+665} <ffffffff80138a2c>{sys_exit_group+0}
<ffffffff8011003e>{system_call+126}
Trying to fix it up, but a reboot is needed
Then i replaced __free_page() with page_cache_release(). It is working
fine now. But what is the difference between these two? whether this
is the correct/safe replacement for __free_page()?
Can anybody help me out in this scenario? My machine is intel
xeon(EM64T) dual processor with redhat enterprise linux 4(2.6.9-11)
running on it.
if anybody knows any link about it, let me share that.
Thanks,
Yogeshwar
On Wed, 2005-10-05 at 20:27 +0530, yogeshwar sonawane wrote:
> hi,
> I am writing a driver for 2.6 in which i am locking down some pages
> into the physical memory by manually traversing the page tables. After
> my work with those pages is finished, i free them using
> __free_page(). For some cases it is running fine. But while running
> some applications, i got the following error:
you forgot to put in a url to your code