While looking at DCCPv6 connections, I encountered the following oops:
Sep 29 17:38:30 gerrit kernel: BUG: unable to handle kernel paging request at
virtual address 00300084
Sep 29 17:38:30 gerrit kernel: printing eip:
Sep 29 17:38:30 gerrit kernel: c03bb4ac
Sep 29 17:38:30 gerrit kernel: *pde = 00000000
Sep 29 17:38:30 gerrit kernel: Oops: 0000 [#1]
Sep 29 17:38:30 gerrit kernel: Modules linked in: usbhid sd_mod
Sep 29 17:38:30 gerrit kernel: CPU: 0
Sep 29 17:38:30 gerrit kernel: EIP: 0060:[kfree_skb+9/46] Not tainted VLI
Sep 29 17:38:30 gerrit kernel: EFLAGS: 00010206
(2.6.18UDP-Lite-g9937f971-dirty #3)
Sep 29 17:38:31 gerrit kernel: EIP is at kfree_skb+0x9/0x2e
Sep 29 17:38:31 gerrit kernel: eax: 00300000 ebx: f2de2818 ecx: f60663e0
edx: 00300000
Sep 29 17:38:31 gerrit kernel: esi: f60663f8 edi: f6066000 ebp: f479fd24
esp: f479fd24
Sep 29 17:38:32 gerrit kernel: ds: 007b es: 007b ss: 0068
Sep 29 17:38:32 gerrit kernel: Process ttcp_dccp (pid: 5743, ti=f479e000
task=f4660ab0 task.ti=f479e000)
Sep 29 17:38:33 gerrit kernel: Stack: f479fd2c c045be46 f479fd58 c03b9070
c0121085 00000292 f7b0b02c f7b0b02c
Sep 29 17:38:33 gerrit kernel: 000000f8 f60663e0 f7b0b02c f7b0b02c
f7b0b02c f479fd88 c03df571 00000002
Sep 29 17:38:33 gerrit kernel: c046301a f479fd94 00000246 c041847d
00000000 00000246 f7b0b02c f7b0b02c
Sep 29 17:38:33 gerrit kernel: Call Trace:
Sep 29 17:38:33 gerrit kernel: [dccp_v6_reqsk_destructor+20/22]
dccp_v6_reqsk_destructor+0x14/0x16
Sep 29 17:38:34 gerrit kernel: [reqsk_queue_destroy+101/197]
reqsk_queue_destroy+0x65/0xc5
Sep 29 17:38:34 gerrit kernel: [inet_csk_listen_stop+46/378]
inet_csk_listen_stop+0x2e/0x17a
Sep 29 17:38:34 gerrit kernel: [dccp_close+383/522] dccp_close+0x17f/0x20a
Sep 29 17:38:34 gerrit kernel: [inet_release+47/76] inet_release+0x2f/0x4c
Sep 29 17:38:35 gerrit kernel: [inet6_release+40/44] inet6_release+0x28/0x2c
Sep 29 17:38:35 gerrit kernel: [sock_release+23/115] sock_release+0x17/0x73
Sep 29 17:38:35 gerrit kernel: [sock_close+33/61] sock_close+0x21/0x3d
Sep 29 17:38:35 gerrit kernel: [__fput+187/368] __fput+0xbb/0x170
Sep 29 17:38:35 gerrit kernel: [fput+24/36] fput+0x18/0x24
Sep 29 17:38:35 gerrit kernel: [filp_close+65/103] filp_close+0x41/0x67
Sep 29 17:38:35 gerrit kernel: [put_files_struct+126/198]
put_files_struct+0x7e/0xc6
Sep 29 17:38:35 gerrit kernel: [do_exit+382/2251] do_exit+0x17e/0x8cb
Sep 29 17:38:35 gerrit kernel: [do_group_exit+43/123] do_group_exit+0x2b/0x7b
Sep 29 17:38:35 gerrit kernel: [get_signal_to_deliver+799/1053]
get_signal_to_deliver+0x31f/0x41d
Sep 29 17:38:35 gerrit kernel: [do_notify_resume+1007/1780]
do_notify_resume+0x3ef/0x6f4
Sep 29 17:38:35 gerrit kernel: [work_notifysig+19/26] work_notifysig+0x13/0x1a
Sep 29 17:38:35 gerrit kernel: [phys_startup_32+-1210107764/-1073741824]
0xb7ef388c
Sep 29 17:38:35 gerrit kernel: =======================
Sep 29 17:38:35 gerrit kernel: Code: 9a 00 00 00 c7 44 24 04 e8 ba 4f c0 c7 04
24 06 ae 49 c0 e8 1c e2 d5 ff e8 b6 8c d4 ff e9 59 ff ff ff 55 89 e5 89 c2 85
c0 74 12 <8b> 80 84 00 00 00 83 e8 01 75 09 89 d0 e8 26 ff ff ff 5d c3 ff
Sep 29 17:38:35 gerrit kernel: EIP: [kfree_skb+9/46] kfree_skb+0x9/0x2e SS:ESP
0068:f479fd24
Sep 29 17:38:35 gerrit kernel: <1>Fixing recursive fault but reboot is needed!
-----------------------------------------
CONFIGURATION
* all DCCP modules built into the kernel
* latest davem-2.6 tree (DCCP part corresponds to acme-2.6.19)
HOW TO REPRODUCE
* Oops was encountered on host with listening socket
* let tccp listen to AF_UNSPEC socket (i.e. both v4/v6)
* connect from other host to the IPv4 address (but don't actually transfer
data)
* kill listening client on host ===> OOPS
I could not find out the exact cause, but the following may be helpful
* while the oops happened, a lock was held by dccp_close:
sk_lock-AF_INET6 dccp_close+0x12/0x20a
* the above suggests the following trace:
--dccp_close calls inet_csk_listen_stop(sk);
--inet_csk_listen_stop calls reqsk_queue_destroy
--the destructor dccp_v6_reqsk_destructor is called later in
inet_csk_listen_stop,
in the while loop, which calls inet_csk_destroy_sock
--inet_csk_destroy_sock calls sk->sk_prot->destroy(sk), which goes to
dccp_v6_reqsk_destructor
Sorry, I can't offer more explanation.
Gerrit
-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html