diff options
| author | David S. Miller <davem@davemloft.net> | 2008-10-06 15:48:29 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2008-10-06 15:48:29 -0400 |
| commit | 88a944eef8a4f9a2ca647eb16202a2b63f8ba7cd (patch) | |
| tree | 857f346e1a0ac76a516c910cf0a8980192301266 /net/ax25/ax25_std_timer.c | |
| parent | 0523820482dcb42784572ffd2296c2f08c275a2b (diff) | |
Revert "ax25: Fix std timer socket destroy handling."
This reverts commit 30902dc3cb0ea1cfc7ac2b17bcf478ff98420d74.
It causes all kinds of problems, based upon a report by
Bernard (f6bvp) and analysis by Jarek Poplawski.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ax25/ax25_std_timer.c')
| -rw-r--r-- | net/ax25/ax25_std_timer.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/net/ax25/ax25_std_timer.c b/net/ax25/ax25_std_timer.c index cdc7e751ef36..96e4b9273250 100644 --- a/net/ax25/ax25_std_timer.c +++ b/net/ax25/ax25_std_timer.c | |||
| @@ -39,9 +39,11 @@ void ax25_std_heartbeat_expiry(ax25_cb *ax25) | |||
| 39 | 39 | ||
| 40 | switch (ax25->state) { | 40 | switch (ax25->state) { |
| 41 | case AX25_STATE_0: | 41 | case AX25_STATE_0: |
| 42 | if (!sk || | 42 | /* Magic here: If we listen() and a new link dies before it |
| 43 | sock_flag(sk, SOCK_DESTROY) || | 43 | is accepted() it isn't 'dead' so doesn't get removed. */ |
| 44 | sock_flag(sk, SOCK_DEAD)) { | 44 | if (!sk || sock_flag(sk, SOCK_DESTROY) || |
| 45 | (sk->sk_state == TCP_LISTEN && | ||
| 46 | sock_flag(sk, SOCK_DEAD))) { | ||
| 45 | if (sk) { | 47 | if (sk) { |
| 46 | sock_hold(sk); | 48 | sock_hold(sk); |
| 47 | ax25_destroy_socket(ax25); | 49 | ax25_destroy_socket(ax25); |
