what is the difference between __free_page() & page_cache_release()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux