Wei Yongjun wrote, at 05/11/2010 02:43 PM: > commit fbdf501c9374966a56829ecca3a7f25d2b49a305 > 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. > > commit d598b166ced20d9b9281ea3527c0e18405ddb803 > sctp: Make sure we always return valid retransmit path > try to fix it, but if DEBUG is configured, the oops is still > exists. > > Signed-off-by: Wei Yongjun <yjwei@xxxxxxxxxxxxxx> > --- > net/sctp/associola.c | 15 ++++++++------- > 1 files changed, 8 insertions(+), 7 deletions(-) > > diff --git a/net/sctp/associola.c b/net/sctp/associola.c > index 3912420..1f49af5 100644 > --- a/net/sctp/associola.c > +++ b/net/sctp/associola.c > @@ -1323,15 +1323,16 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc) > } > } > > - if (t) > + if (t) { > asoc->peer.retran_path = t; > > - SCTP_DEBUG_PRINTK_IPADDR("sctp_assoc_update_retran_path:association" > - " %p addr: ", > - " port: %d\n", > - asoc, > - (&t->ipaddr), > - ntohs(t->ipaddr.v4.sin_port)); > + SCTP_DEBUG_PRINTK_IPADDR("sctp_assoc_update_retran_path:" Try __func__ to simplify code. > + "association %p addr: ", > + " port: %d\n", > + asoc, > + (&t->ipaddr), > + ntohs(t->ipaddr.v4.sin_port)); > + } How about providing debug infos if t is NULL? something like "failed to update retran path", or "no change to retran path". Tested-by: Shan Wei <shanwei@xxxxxxxxxxxxxx> -- Best Regards ----- Shan Wei > } > > /* Choose the transport for sending retransmit packet. */ -- To unsubscribe from this list: send the line "unsubscribe linux-sctp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html