diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2010-05-01 04:41:09 +0200 |
---|---|---|
committer | Vlad Yasevich <vladislav.yasevich@hp.com> | 2010-05-01 04:41:09 +0200 |
commit | d598b166ced20d9b9281ea3527c0e18405ddb803 (patch) | |
tree | 9133b90a3f42347842190938cd27fa7ce6729377 /net/sctp/associola.c | |
parent | sctp: cleanup: remove duplicate assignment (diff) | |
download | linux-d598b166ced20d9b9281ea3527c0e18405ddb803.tar.xz linux-d598b166ced20d9b9281ea3527c0e18405ddb803.zip |
sctp: Make sure we always return valid retransmit path
commit 4951feda0c60d1ef681f1a270afdd617924ab041
sctp: Do no select unconfirmed transports for retransmissions
added code to make sure that we do not select unconfirmed paths
for data transmission. This caused a problem when there are only
2 paths, 1 unconfirmed and 1 unreachable. In that case, the next
retransmit path returned is NULL and that causes a kernel crash.
The solution is to only change retransmit paths if we found one to use.
Reported-by: Frank Schuster <frank.schuster01@web.de>
Signed-off-b: Vlad Yasevich <vladislav.yasevich@hp.com>
Diffstat (limited to 'net/sctp/associola.c')
-rw-r--r-- | net/sctp/associola.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index de830c268564..fab9cb2783a7 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -1324,7 +1324,8 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc) } } - asoc->peer.retran_path = t; + if (t) + asoc->peer.retran_path = t; SCTP_DEBUG_PRINTK_IPADDR("sctp_assoc_update_retran_path:association" " %p addr: ", |