Patchwork [3.5.y.z,extended,stable] Patch "sctp: fully initialize sctp_outq in sctp_outq_init" has been added to staging queue

mail settings
Submitter Luis Henriques
Date June 27, 2013, 12:53 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/255054/
State New
Headers show


Luis Henriques - June 27, 2013, 12:53 p.m.
This is a note to let you know that I have just added a patch titled

    sctp: fully initialize sctp_outq in sctp_outq_init

to the linux-3.5.y-queue branch of the 3.5.y.z extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.y.z tree, see



From 8c4ca7424b40797da7ac9f4f7e04ea71a57e8b71 Mon Sep 17 00:00:00 2001
From: Neil Horman <>
Date: Wed, 12 Jun 2013 14:26:44 -0400
Subject: [PATCH] sctp: fully initialize sctp_outq in sctp_outq_init

commit c5c7774d7eb4397891edca9ebdf750ba90977a69 upstream.

In commit 2f94aabd9f6c925d77aecb3ff020f1cc12ed8f86
(refactor sctp_outq_teardown to insure proper re-initalization)
we modified sctp_outq_teardown to use sctp_outq_init to fully re-initalize the
outq structure.  Steve West recently asked me why I removed the q->error = 0
initalization from sctp_outq_teardown.  I did so because I was operating under
the impression that sctp_outq_init would properly initalize that value for us,
but it doesn't.  sctp_outq_init operates under the assumption that the outq
struct is all 0's (as it is when called from sctp_association_init), but using
it in __sctp_outq_teardown violates that assumption. We should do a memset in
sctp_outq_init to ensure that the entire structure is in a known state there

Signed-off-by: Neil Horman <>
Reported-by: "West, Steve (NSN - US/Fort Worth)" <>
CC: Vlad Yasevich <>
Acked-by: Vlad Yasevich <>
Signed-off-by: David S. Miller <>
[ luis: backported to 3.5: adjusted context ]
Signed-off-by: Luis Henriques <>
 net/sctp/outqueue.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)



diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
index 0716290..8259db2 100644
--- a/net/sctp/outqueue.c
+++ b/net/sctp/outqueue.c
@@ -205,6 +205,8 @@  static inline int sctp_cacc_skip(struct sctp_transport *primary,
 void sctp_outq_init(struct sctp_association *asoc, struct sctp_outq *q)
+	memset(q, 0, sizeof(struct sctp_outq));
 	q->asoc = asoc;
@@ -212,13 +214,7 @@  void sctp_outq_init(struct sctp_association *asoc, struct sctp_outq *q)

-	q->fast_rtx = 0;
-	q->outstanding_bytes = 0;
 	q->empty = 1;
-	q->cork  = 0;
-	q->malloced = 0;
-	q->out_qlen = 0;

 /* Free the outqueue structure and any related pending chunks.