transport may be free before ICMP proto unreachable timer expire, so we should delete active ICMP proto unreachable timer when transport is going away.
Unified · Split
| @@ -173,6 +173,10 @@ void sctp_transport_free(struct sctp_transport *transport) · 172 unmodified lines | |||
| 173 | del_timer(&transport->T3_rtx_timer)) | 173 | del_timer(&transport->T3_rtx_timer)) |
| 174 | sctp_transport_put(transport); | 174 | sctp_transport_put(transport); |
| 175 | 175 | ||
| 176 | /* Delete the ICMP proto unreachable timer if it's active. */ | ||
| 177 | if (timer_pending(&transport->proto_unreach_timer) && | ||
| 178 | del_timer(&transport->proto_unreach_timer)) | ||
| 179 | sctp_association_put(transport->asoc); | ||
| 176 | 180 | ||
| 177 | sctp_transport_put(transport); | 181 | sctp_transport_put(transport); |
| 178 | } | 182 | } |