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 | 173 | del_timer(&transport->T3_rtx_timer)) |
| 174 | 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 | 181 | sctp_transport_put(transport); |
| 178 | 182 | } |