help with page_fault

ishare june.tune.sea at gmail.com
Sat Mar 9 08:38:16 EST 2013


   In boot stage , my kernel get into loop restart due to page_fault.
   I have catched the source . here is the backtrace :

   #3  0xc01c686e in new_inode (sb=0xc8df5800) at fs/inode.c:551
   #4  0xc01d076d in get_sb_pseudo (fs_type=0xc02e1d00, name=0xc02c3747 "futex", ops=0x0, magic=195894762) at fs/libfs.c:201
   #5  0xc015cbbf in futexfs_get_sb (fs_type=0xc02e1d00, flags=0, dev_name=0xc02c374d "futexfs", data=0x0) at kernel/futex.c:679
   #6  0xc01a62c5 in do_kern_mount (fstype=0xc02c374d "futexfs", flags=0, name=0xc02c374d "futexfs", data=0x0) at fs/super.c:718

   code  at  the frame 3  is :
   struct inode *root = new_inode(s);
   after return from  the new_inode , the root->i_dentry=(0x1,0x3).
   
   then calling  the function  d_instantiate(entry, root),here entry is of type struct entry*,

   this calls do list_add(&entry->d_alias, root->i_dentry), 
   Obviously,this need to address the inode->i_dentry->next,which is ox3,
   but 0x3 is low address ,addressing to it causes a page_fault ,then make system  restart .
 

  I doubt that the returned root inode need to be initialized using a applicable i_dentry . 
  If so ,what value can be used ? If not , where am I wrong?

  thanks!


                      

    
 
   
  



More information about the Kernelnewbies mailing list