aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerrit Renker <gerrit@erg.abdn.ac.uk>2007-11-24 17:37:48 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:54:51 -0500
commit3de5489f47febe0333b142e0eb6389b9924b2634 (patch)
tree6ac340c65f64245d14c21a4bca03580c3d9789fe
parenta47c51044a77124ce66cd8513bba6f4d7673e43d (diff)
[CCID2]: Bug in reading Ack Vectors
In CCID2 the receiver-history is sorted in ascending order of sequence number, but the processing of received Ack Vectors requires the list traversal in the opposite direction. The current code has a bug in this regard: the list traversal is upwards. As a consequence, only Ack Vectors with a run length of 1 will pass, in all other Ack Vectors the remaining (acked) sequence numbers are missed, and may later falsely be identified as lost. Note: This bug is only visible when Ack Ratio > 1, since otherwise the run lengths of Ack Vectors are 0. Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: Ian McDonald <ian.mcdonald@jandi.co.nz> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/dccp/ccids/ccid2.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/dccp/ccids/ccid2.c b/net/dccp/ccids/ccid2.c
index c9c465e86281..7873dc78b6bc 100644
--- a/net/dccp/ccids/ccid2.c
+++ b/net/dccp/ccids/ccid2.c
@@ -666,7 +666,7 @@ static void ccid2_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
666 done = 1; 666 done = 1;
667 break; 667 break;
668 } 668 }
669 seqp = seqp->ccid2s_next; 669 seqp = seqp->ccid2s_prev;
670 } 670 }
671 if (done) 671 if (done)
672 break; 672 break;