diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2010-11-23 05:36:56 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-11-28 22:29:27 +0300 |
commit | 0ac78870220b6e0ac74dd9292bcfa7b18718babd (patch) | |
tree | 19b0359b9a805857acf9ab713afd4e485e4da692 /net/dccp | |
parent | a301e1703edc088592f8c5c16f9bdd34a0792776 (diff) | |
download | linux-0ac78870220b6e0ac74dd9292bcfa7b18718babd.tar.xz |
dccp: fix error in updating the GAR
This fixes a bug in updating the Greatest Acknowledgment number Received (GAR):
the current implementation does not track the greatest received value -
lower values in the range AWL..AWH (RFC 4340, 7.5.1) erase higher ones.
Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp')
-rw-r--r-- | net/dccp/input.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/dccp/input.c b/net/dccp/input.c index 265985370fa1..e424a09e83f6 100644 --- a/net/dccp/input.c +++ b/net/dccp/input.c @@ -239,7 +239,8 @@ static int dccp_check_seqno(struct sock *sk, struct sk_buff *skb) dccp_update_gsr(sk, seqno); if (dh->dccph_type != DCCP_PKT_SYNC && - (ackno != DCCP_PKT_WITHOUT_ACK_SEQ)) + ackno != DCCP_PKT_WITHOUT_ACK_SEQ && + after48(ackno, dp->dccps_gar)) dp->dccps_gar = ackno; } else { unsigned long now = jiffies; |