diff options
author | Wei Yongjun <yjwei@cn.fujitsu.com> | 2010-05-09 16:56:07 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-16 00:46:22 -0700 |
commit | 55fa0cfd7c3ac2ae34cac7dca2e3fbcfe661e6c3 (patch) | |
tree | 0f9ccf2d00a10a88f601245fced3581f49f93862 | |
parent | 35790c0421121364883a167bab8a2e37e1f67f78 (diff) | |
download | linux-3.10-55fa0cfd7c3ac2ae34cac7dca2e3fbcfe661e6c3.tar.gz linux-3.10-55fa0cfd7c3ac2ae34cac7dca2e3fbcfe661e6c3.tar.bz2 linux-3.10-55fa0cfd7c3ac2ae34cac7dca2e3fbcfe661e6c3.zip |
sctp: delete active ICMP proto unreachable timer when free transport
transport may be free before ICMP proto unreachable timer expire, so
we should delete active ICMP proto unreachable timer when transport
is going away.
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Acked-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/sctp/transport.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/sctp/transport.c b/net/sctp/transport.c index 4a368038d46..165d54e07fc 100644 --- a/net/sctp/transport.c +++ b/net/sctp/transport.c @@ -173,6 +173,10 @@ void sctp_transport_free(struct sctp_transport *transport) del_timer(&transport->T3_rtx_timer)) sctp_transport_put(transport); + /* Delete the ICMP proto unreachable timer if it's active. */ + if (timer_pending(&transport->proto_unreach_timer) && + del_timer(&transport->proto_unreach_timer)) + sctp_association_put(transport->asoc); sctp_transport_put(transport); } |