summaryrefslogtreecommitdiffstats
path: root/net/sctp/associola.c
diff options
context:
space:
mode:
authorVlad Yasevich <vladislav.yasevich@hp.com>2007-03-20 01:01:17 +0100
committerDavid S. Miller <davem@sunset.davemloft.net>2007-03-20 08:09:43 +0100
commit0b58a811461ccf3cf848aba4cc192538fd3b0516 (patch)
treee8ada90819aabdcc2041a5637c7e6f44446cc36b /net/sctp/associola.c
parent[IrDA]: Calling ppp_unregister_channel() from process context (diff)
downloadlinux-0b58a811461ccf3cf848aba4cc192538fd3b0516.tar.xz
linux-0b58a811461ccf3cf848aba4cc192538fd3b0516.zip
[SCTP]: Clean up stale data during association restart
During association restart we may have stale data sitting on the ULP queue waiting for ordering or reassembly. This data may cause severe problems if not cleaned up. In particular stale data pending ordering may cause problems with receive window exhaustion if our peer has decided to restart the association. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: Sridhar Samudrala <sri@us.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/associola.c')
-rw-r--r--net/sctp/associola.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index fa82b73c965b..2505cd3b8d29 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -1063,6 +1063,12 @@ void sctp_assoc_update(struct sctp_association *asoc,
*/
sctp_ssnmap_clear(asoc->ssnmap);
+ /* Flush the ULP reassembly and ordered queue.
+ * Any data there will now be stale and will
+ * cause problems.
+ */
+ sctp_ulpq_flush(&asoc->ulpq);
+
} else {
/* Add any peer addresses from the new association. */
list_for_each(pos, &new->peer.transport_addr_list) {