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