|
@@ -224,7 +224,7 @@ void sctp_outq_init(struct sctp_association *asoc, struct sctp_outq *q)
|
|
|
|
|
|
/* Free the outqueue structure and any related pending chunks.
|
|
|
*/
|
|
|
-void sctp_outq_teardown(struct sctp_outq *q)
|
|
|
+static void __sctp_outq_teardown(struct sctp_outq *q)
|
|
|
{
|
|
|
struct sctp_transport *transport;
|
|
|
struct list_head *lchunk, *temp;
|
|
@@ -277,8 +277,6 @@ void sctp_outq_teardown(struct sctp_outq *q)
|
|
|
sctp_chunk_free(chunk);
|
|
|
}
|
|
|
|
|
|
- q->error = 0;
|
|
|
-
|
|
|
/* Throw away any leftover control chunks. */
|
|
|
list_for_each_entry_safe(chunk, tmp, &q->control_chunk_list, list) {
|
|
|
list_del_init(&chunk->list);
|
|
@@ -286,11 +284,17 @@ void sctp_outq_teardown(struct sctp_outq *q)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void sctp_outq_teardown(struct sctp_outq *q)
|
|
|
+{
|
|
|
+ __sctp_outq_teardown(q);
|
|
|
+ sctp_outq_init(q->asoc, q);
|
|
|
+}
|
|
|
+
|
|
|
/* Free the outqueue structure and any related pending chunks. */
|
|
|
void sctp_outq_free(struct sctp_outq *q)
|
|
|
{
|
|
|
/* Throw away leftover chunks. */
|
|
|
- sctp_outq_teardown(q);
|
|
|
+ __sctp_outq_teardown(q);
|
|
|
|
|
|
/* If we were kmalloc()'d, free the memory. */
|
|
|
if (q->malloced)
|