*
* This is ALPHA test software. This code may break your machine,
* randomly fail to work with new releases, misbehave and/or generally
- * screw up. It might even work.
+ * screw up. It might even work.
*
* This code REQUIRES 2.1.15 or higher
*
{
struct x25_sock *x25 = x25_sk(sk);
- init_timer(&x25->timer);
- x25->timer.data = (unsigned long)sk;
- x25->timer.function = &x25_timer_expiry;
+ setup_timer(&x25->timer, x25_timer_expiry, (unsigned long)sk);
/* initialized by sock_init_data */
sk->sk_timer.data = (unsigned long)sk;
{
struct sock *sk = (struct sock *)param;
- bh_lock_sock(sk);
- if (sock_owned_by_user(sk)) /* can currently only occur in state 3 */
+ bh_lock_sock(sk);
+ if (sock_owned_by_user(sk)) /* can currently only occur in state 3 */
goto restart_heartbeat;
switch (x25_sk(sk)->state) {
if (sock_flag(sk, SOCK_DESTROY) ||
(sk->sk_state == TCP_LISTEN &&
sock_flag(sk, SOCK_DEAD))) {
- x25_destroy_socket(sk);
- goto unlock;
+ bh_unlock_sock(sk);
+ x25_destroy_socket_from_timer(sk);
+ return;
}
break;
}
restart_heartbeat:
x25_start_heartbeat(sk);
-unlock:
bh_unlock_sock(sk);
}