[X25]: fix for spinlock recurse and spinlock lockup with timer handler
When the sk_timer function x25_heartbeat_expiry() is called by the kernel in a running/terminating process, spinlock-recursion and spinlock-lockup locks up the kernel. This has happened with testing on some distro's and the patch below fixed it. Signed-off-by: Shaun Pereira <spereira@tusc.com.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e0a515bc6a
commit
43dff98b02
|
@ -114,8 +114,9 @@ static void x25_heartbeat_expiry(unsigned long param)
|
|||
if (sock_flag(sk, SOCK_DESTROY) ||
|
||||
(sk->sk_state == TCP_LISTEN &&
|
||||
sock_flag(sk, SOCK_DEAD))) {
|
||||
bh_unlock_sock(sk);
|
||||
x25_destroy_socket(sk);
|
||||
goto unlock;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -128,7 +129,6 @@ static void x25_heartbeat_expiry(unsigned long param)
|
|||
}
|
||||
restart_heartbeat:
|
||||
x25_start_heartbeat(sk);
|
||||
unlock:
|
||||
bh_unlock_sock(sk);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue