--- a/net/netrom/af_netrom.c 2007-02-24 00:52:30.000000000 +0100 +++ b/net/netrom/af_netrom.c 2008-10-06 11:50:25.000000000 +0200 @@ -504,6 +504,7 @@ static int nr_release(struct socket *soc if (sk == NULL) return 0; sock_hold(sk); + sock_orphan(sk); lock_sock(sk); nr = nr_sk(sk); @@ -527,7 +528,6 @@ static int nr_release(struct socket *soc sk->sk_state = TCP_CLOSE; sk->sk_shutdown |= SEND_SHUTDOWN; sk->sk_state_change(sk); - sock_orphan(sk); sock_set_flag(sk, SOCK_DESTROY); sk->sk_socket = NULL; break; --- a/net/ax25/af_ax25.c 2007-02-24 00:52:30.000000000 +0100 +++ b/net/ax25/af_ax25.c 2008-10-06 11:56:25.000000000 +0200 @@ -302,6 +302,10 @@ void ax25_destroy_socket(ax25_cb *ax25) /* Queue the unaccepted socket for death */ sock_orphan(skb->sk); + /* 9A4GL: hack to release unaccepted + sockets */ + skb->sk->sk_state = TCP_LISTEN; + ax25_start_heartbeat(sax25); sax25->state = AX25_STATE_0; }