summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorWei Yongjun <yjwei@cn.fujitsu.com>2010-05-09 16:56:07 (GMT)
committerDavid S. Miller <davem@davemloft.net>2010-05-16 07:46:22 (GMT)
commit55fa0cfd7c3ac2ae34cac7dca2e3fbcfe661e6c3 (patch)
tree0f9ccf2d00a10a88f601245fced3581f49f93862 /net
parent35790c0421121364883a167bab8a2e37e1f67f78 (diff)
downloadlinux-fsl-qoriq-55fa0cfd7c3ac2ae34cac7dca2e3fbcfe661e6c3.tar.xz
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>
Diffstat (limited to 'net')
-rw-r--r--net/sctp/transport.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/sctp/transport.c b/net/sctp/transport.c
index 4a36803..165d54e 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);
}