[ INFO: possible recursive locking detected ]
2.6.25 #3
---------------------------------------------
ax25ipd/3811 is trying to acquire lock:
(rose_node_list_lock){-+..}, at: [<
f8d31f1a>] rose_get_neigh+0x1a/0xa0
[rose]
but task is already holding lock:
(rose_node_list_lock){-+..}, at: [<
f8d31fed>]
rose_route_frame+0x4d/0x620 [rose]
other info that might help us debug this:
6 locks held by ax25ipd/3811:
#0: (&tty->atomic_write_lock){--..}, at: [<
c0259a1c>]
tty_write_lock+0x1c/0x50
#1: (rcu_read_lock){..--}, at: [<
c02aea36>] net_rx_action+0x96/0x230
#2: (rcu_read_lock){..--}, at: [<
c02ac5c0>] netif_receive_skb+0x100/0x2f0
#3: (rose_node_list_lock){-+..}, at: [<
f8d31fed>]
rose_route_frame+0x4d/0x620 [rose]
#4: (rose_neigh_list_lock){-+..}, at: [<
f8d31ff7>]
rose_route_frame+0x57/0x620 [rose]
#5: (rose_route_list_lock){-+..}, at: [<
f8d32001>]
rose_route_frame+0x61/0x620 [rose]
stack backtrace:
Pid: 3811, comm: ax25ipd Not tainted 2.6.25 #3
[<
c0147e27>] print_deadlock_bug+0xc7/0xd0
[<
c0147eca>] check_deadlock+0x9a/0xb0
[<
c0149cd2>] validate_chain+0x1e2/0x310
[<
c0149b95>] ? validate_chain+0xa5/0x310
[<
c010a7d8>] ? native_sched_clock+0x88/0xc0
[<
c0149fa1>] __lock_acquire+0x1a1/0x750
[<
c014a5d1>] lock_acquire+0x81/0xa0
[<
f8d31f1a>] ? rose_get_neigh+0x1a/0xa0 [rose]
[<
c03201a3>] _spin_lock_bh+0x33/0x60
[<
f8d31f1a>] ? rose_get_neigh+0x1a/0xa0 [rose]
[<
f8d31f1a>] rose_get_neigh+0x1a/0xa0 [rose]
[<
f8d32404>] rose_route_frame+0x464/0x620 [rose]
[<
c031ffdd>] ? _read_unlock+0x1d/0x20
[<
f8d31fa0>] ? rose_route_frame+0x0/0x620 [rose]
[<
f8d1c396>] ax25_rx_iframe+0x66/0x3b0 [ax25]
[<
f8d1f42f>] ? ax25_start_t3timer+0x1f/0x40 [ax25]
[<
f8d1e65b>] ax25_std_frame_in+0x7fb/0x890 [ax25]
[<
c0320005>] ? _spin_unlock_bh+0x25/0x30
[<
f8d1bdf6>] ax25_kiss_rcv+0x2c6/0x800 [ax25]
[<
c02a4769>] ? sock_def_readable+0x59/0x80
[<
c014a8a7>] ? __lock_release+0x47/0x70
[<
c02a4769>] ? sock_def_readable+0x59/0x80
[<
c031ffdd>] ? _read_unlock+0x1d/0x20
[<
c02a4769>] ? sock_def_readable+0x59/0x80
[<
c02a4d3a>] ? sock_queue_rcv_skb+0x13a/0x1d0
[<
c02a4c45>] ? sock_queue_rcv_skb+0x45/0x1d0
[<
f8d1bb30>] ? ax25_kiss_rcv+0x0/0x800 [ax25]
[<
c02ac715>] netif_receive_skb+0x255/0x2f0
[<
c02ac5c0>] ? netif_receive_skb+0x100/0x2f0
[<
c02af05c>] process_backlog+0x7c/0xf0
[<
c02aeb0c>] net_rx_action+0x16c/0x230
[<
c02aea36>] ? net_rx_action+0x96/0x230
[<
c012bd53>] __do_softirq+0x93/0x120
[<
f8d2a68a>] ? mkiss_receive_buf+0x33a/0x3f0 [mkiss]
[<
c012be37>] do_softirq+0x57/0x60
[<
c012c265>] local_bh_enable_ip+0xa5/0xe0
[<
c0320005>] _spin_unlock_bh+0x25/0x30
[<
f8d2a68a>] mkiss_receive_buf+0x33a/0x3f0 [mkiss]
[<
c025ea37>] pty_write+0x47/0x60
[<
c025c620>] write_chan+0x1b0/0x220
[<
c0259a1c>] ? tty_write_lock+0x1c/0x50
[<
c011fec0>] ? default_wake_function+0x0/0x10
[<
c0259bea>] tty_write+0x12a/0x1c0
[<
c025c470>] ? write_chan+0x0/0x220
[<
c018bbc6>] vfs_write+0x96/0x130
[<
c0259ac0>] ? tty_write+0x0/0x1c0
[<
c018c24d>] sys_write+0x3d/0x70
[<
c0104d1e>] sysenter_past_esp+0x5f/0xa5
=======================
BUG: soft lockup - CPU#0 stuck for 61s! [ax25ipd:3811]
Pid: 3811, comm: ax25ipd Not tainted (2.6.25 #3)
EIP: 0060:[<
c010a9db>] EFLAGS:
00000246 CPU: 0
EIP is at native_read_tsc+0xb/0x20
EAX:
b404aa2c EBX:
b404a9c9 ECX:
017f1000 EDX:
0000076b
ESI:
00000001 EDI:
00000000 EBP:
ecc83afc ESP:
ecc83afc
DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
CR0:
8005003b CR2:
b7f5f000 CR3:
2cd8e000 CR4:
000006f0
DR0:
00000000 DR1:
00000000 DR2:
00000000 DR3:
00000000
DR6:
ffff0ff0 DR7:
00000400
[<
c0204937>] delay_tsc+0x17/0x30
[<
c02048e9>] __delay+0x9/0x10
[<
c02127f6>] __spin_lock_debug+0x76/0xf0
[<
c0212618>] ? spin_bug+0x18/0x100
[<
c0147923>] ? __lock_contended+0xa3/0x110
[<
c0212998>] _raw_spin_lock+0x68/0x90
[<
c03201bf>] _spin_lock_bh+0x4f/0x60
[<
f8d31f1a>] ? rose_get_neigh+0x1a/0xa0 [rose]
[<
f8d31f1a>] rose_get_neigh+0x1a/0xa0 [rose]
[<
f8d32404>] rose_route_frame+0x464/0x620 [rose]
[<
c031ffdd>] ? _read_unlock+0x1d/0x20
[<
f8d31fa0>] ? rose_route_frame+0x0/0x620 [rose]
[<
f8d1c396>] ax25_rx_iframe+0x66/0x3b0 [ax25]
[<
f8d1f42f>] ? ax25_start_t3timer+0x1f/0x40 [ax25]
[<
f8d1e65b>] ax25_std_frame_in+0x7fb/0x890 [ax25]
[<
c0320005>] ? _spin_unlock_bh+0x25/0x30
[<
f8d1bdf6>] ax25_kiss_rcv+0x2c6/0x800 [ax25]
[<
c02a4769>] ? sock_def_readable+0x59/0x80
[<
c014a8a7>] ? __lock_release+0x47/0x70
[<
c02a4769>] ? sock_def_readable+0x59/0x80
[<
c031ffdd>] ? _read_unlock+0x1d/0x20
[<
c02a4769>] ? sock_def_readable+0x59/0x80
[<
c02a4d3a>] ? sock_queue_rcv_skb+0x13a/0x1d0
[<
c02a4c45>] ? sock_queue_rcv_skb+0x45/0x1d0
[<
f8d1bb30>] ? ax25_kiss_rcv+0x0/0x800 [ax25]
[<
c02ac715>] netif_receive_skb+0x255/0x2f0
[<
c02ac5c0>] ? netif_receive_skb+0x100/0x2f0
[<
c02af05c>] process_backlog+0x7c/0xf0
[<
c02aeb0c>] net_rx_action+0x16c/0x230
[<
c02aea36>] ? net_rx_action+0x96/0x230
[<
c012bd53>] __do_softirq+0x93/0x120
[<
f8d2a68a>] ? mkiss_receive_buf+0x33a/0x3f0 [mkiss]
[<
c012be37>] do_softirq+0x57/0x60
[<
c012c265>] local_bh_enable_ip+0xa5/0xe0
[<
c0320005>] _spin_unlock_bh+0x25/0x30
[<
f8d2a68a>] mkiss_receive_buf+0x33a/0x3f0 [mkiss]
[<
c025ea37>] pty_write+0x47/0x60
[<
c025c620>] write_chan+0x1b0/0x220
[<
c0259a1c>] ? tty_write_lock+0x1c/0x50
[<
c011fec0>] ? default_wake_function+0x0/0x10
[<
c0259bea>] tty_write+0x12a/0x1c0
[<
c025c470>] ? write_chan+0x0/0x220
[<
c018bbc6>] vfs_write+0x96/0x130
[<
c0259ac0>] ? tty_write+0x0/0x1c0
[<
c018c24d>] sys_write+0x3d/0x70
[<
c0104d1e>] sysenter_past_esp+0x5f/0xa5
=======================
Since rose_route_frame() does not use rose_node_list we can safely
remove rose_node_list_lock spin lock here and let it be free for
rose_get_neigh().
Signed-off-by: Bernard Pidoux <f6bvp@amsat.org>
Signed-off-by: David S. Miller <davem@davemloft.net>