path: root/net/sctp/inqueue.c
diff options
authorNeil Horman <>2006-05-05 17:02:09 -0700
committerDavid S. Miller <>2006-05-05 17:02:09 -0700
commit7c3ceb4fb9667f34f1599a062efecf4cdc4a4ce5 (patch)
treee54921ec9e8cffac5fa3d4155d18f144d61ad878 /net/sctp/inqueue.c
parent91ef5d2d6e934762db9c3e0d9e5b2862e40ea429 (diff)
[SCTP]: Allow spillover of receive buffer to avoid deadlock.
This patch fixes a deadlock situation in the receive path by allowing temporary spillover of the receive buffer. - If the chunk we receive has a tsn that immediately follows the ctsn, accept it even if we run out of receive buffer space and renege data with higher TSNs. - Once we accept one chunk in a packet, accept all the remaining chunks even if we run out of receive buffer space. Signed-off-by: Neil Horman <> Acked-by: Mark Butler <> Acked-by: Vlad Yasevich <> Signed-off-by: Sridhar Samudrala <> Signed-off-by: David S. Miller <>
Diffstat (limited to 'net/sctp/inqueue.c')
1 files changed, 1 insertions, 0 deletions
diff --git a/net/sctp/inqueue.c b/net/sctp/inqueue.c
index 297b8951463e..cf0c767d43ae 100644
--- a/net/sctp/inqueue.c
+++ b/net/sctp/inqueue.c
@@ -149,6 +149,7 @@ struct sctp_chunk *sctp_inq_pop(struct sctp_inq *queue)
/* This is the first chunk in the packet. */
chunk->singleton = 1;
ch = (sctp_chunkhdr_t *) chunk->skb->data;
+ chunk->data_accepted = 0;
chunk->chunk_hdr = ch;