diff options
Diffstat (limited to 'net/sctp')
-rw-r--r-- | net/sctp/associola.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 525864bf4f07..215b56951d76 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
@@ -810,11 +810,16 @@ void sctp_assoc_control_transport(struct sctp_association *asoc, | |||
810 | break; | 810 | break; |
811 | 811 | ||
812 | case SCTP_TRANSPORT_DOWN: | 812 | case SCTP_TRANSPORT_DOWN: |
813 | /* if the transort was never confirmed, do not transition it | 813 | /* If the transport was never confirmed, do not transition it |
814 | * to inactive state. | 814 | * to inactive state. Also, release the cached route since |
815 | * there may be a better route next time. | ||
815 | */ | 816 | */ |
816 | if (transport->state != SCTP_UNCONFIRMED) | 817 | if (transport->state != SCTP_UNCONFIRMED) |
817 | transport->state = SCTP_INACTIVE; | 818 | transport->state = SCTP_INACTIVE; |
819 | else { | ||
820 | dst_release(transport->dst); | ||
821 | transport->dst = NULL; | ||
822 | } | ||
818 | 823 | ||
819 | spc_state = SCTP_ADDR_UNREACHABLE; | 824 | spc_state = SCTP_ADDR_UNREACHABLE; |
820 | break; | 825 | break; |