sctp: delete active ICMP proto unreachable timer when free transport
authorWei Yongjun <yjwei@cn.fujitsu.com>
Sun, 9 May 2010 16:56:07 +0000 (16:56 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 16 May 2010 07:46:22 +0000 (00:46 -0700)
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>
net/sctp/transport.c

index 4a368038d46f77eb4370d6a65f636fa424470bf6..165d54e07fcd4bc571642fff9ad020411e417c00 100644 (file)
@@ -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);
 }