![]() | |||||||||||||
Messages in this thread |
Hi all, I have a kernel Oops on ppc kernel 2.4.5 with an application listenning to a high throughput of incoming messages on a netlink socket. The application is running select() on the netlink socket file descriptor followed with recvmsg() call (in a forever loop). The Oops (not saved, and hard to reproduce) showed a crash in the sock_poll function (kernel/net/socket.c); after investigations, crash is due to a NULL pointer in f_dentry member of the file structure. This pointer is set to NULL in the fput (kernel/fs/file_table.c) function. The backtraces show that the calling function is the sys_recvmsg (kernel/net/socket.c). My understanding of the problem is the following: - When everything goes right: A/ When netlink socket is opened, its associated file structure is initialised with f_count to 1, and a dentry; B/ When select is executed, f_count is increased to 2; C/ When select ends, f_count is decreased to 1; D/ When recvmsg is executed, f_count is increased to 2; E/ When recvmsg ends, f_count is decreased to 1; F/ Loop forever to B/ - When the problem occurs: A/ When netlink socket is opened, its associated file structure is initialised with f_count to 1, and a dentry; B/ When select is executed, f_count is increased to 2; C/ When select ends, f_count is decreased to 1; D/ When recvmsg is executed, f_count is increased to 2; ????/ SOMETHING decreases f_count to 1; E/ When recvmsg ends, f_count is decreased to 0, AND THEREFORE f_dentry member of file is set to NULL (since file is considered as not used) ; F/ When select is executed, f_count is incremented to 1, but f_dentry is NULL and therefore following code crashes in sock_poll function: sock = socki_lookup(file->f_dentry->d_inode); Do you have an idea of the event that could have decreased the f_count member between D/ and E/ ? Could you give me elements to continue my investigation ? Thanks a lot for you help, Fabien - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2005-03-22 12:15 [W:0.281 / U:0.320 seconds] ©2003-2008 Jasper Spaans | |||||||||||||