summaryrefslogtreecommitdiffstats
path: root/include/net/sctp
diff options
context:
space:
mode:
authorNeil Horman2006-05-06 02:02:09 +0200
committerDavid S. Miller2006-05-06 02:02:09 +0200
commit7c3ceb4fb9667f34f1599a062efecf4cdc4a4ce5 (patch)
treee54921ec9e8cffac5fa3d4155d18f144d61ad878 /include/net/sctp
parentMerge master.kernel.org:/home/rmk/linux-2.6-mmc (diff)
downloadkernel-qcow2-linux-7c3ceb4fb9667f34f1599a062efecf4cdc4a4ce5.tar.gz
kernel-qcow2-linux-7c3ceb4fb9667f34f1599a062efecf4cdc4a4ce5.tar.xz
kernel-qcow2-linux-7c3ceb4fb9667f34f1599a062efecf4cdc4a4ce5.zip
[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 <nhorman@tuxdriver.com> Acked-by: Mark Butler <butlerm@middle.net> Acked-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 'include/net/sctp')
-rw-r--r--include/net/sctp/structs.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index eba99f375517..7f4fea173fb1 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -712,6 +712,7 @@ struct sctp_chunk {
__u8 tsn_gap_acked; /* Is this chunk acked by a GAP ACK? */
__s8 fast_retransmit; /* Is this chunk fast retransmitted? */
__u8 tsn_missing_report; /* Data chunk missing counter. */
+ __u8 data_accepted; /* At least 1 chunk in this packet accepted */
};
void sctp_chunk_hold(struct sctp_chunk *);