Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e1cd8f78f8cbfa314a095dbf704707217c8ee197
Commit:     e1cd8f78f8cbfa314a095dbf704707217c8ee197
Parent:     c67625a1ecd7caf4c0490fc5278d6bb736a5297f
Author:     Ilpo J�rvinen <[EMAIL PROTECTED]>
AuthorDate: Wed Nov 14 15:55:09 2007 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Nov 14 15:55:09 2007 -0800

    [TCP] FRTO: Clear frto_highmark only after process_frto that uses it
    
    I broke this in commit 3de96471bd7fb76406e975ef6387abe3a0698149:
    
        [TCP]: Wrap-safed reordering detection FRTO check
    
    tcp_process_frto should always see a valid frto_highmark. An invalid
    frto_highmark (zero) is very likely what ultimately caused a seqno
    compare in tcp_frto_enter_loss to do the wrong leading to the LOST-bit
    leak.
    
    Having LOST-bits integry ensured like done after commit
    23aeeec365dcf8bc87fae44c533e50d0bb4f23cc:
    
        [TCP] FRTO: Plug potential LOST-bit leak
    
    won't hurt. It may still be useful in some other, possibly legimate,
    scenario.
    
    Reported by Chazarain Guillaume <[EMAIL PROTECTED]>.
    
    Signed-off-by: Ilpo J�rvinen <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/ipv4/tcp_input.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 3f126ec..0f0c1c9 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -3113,11 +3113,11 @@ static int tcp_ack(struct sock *sk, struct sk_buff 
*skb, int flag)
        /* See if we can take anything off of the retransmit queue. */
        flag |= tcp_clean_rtx_queue(sk, &seq_rtt, prior_fackets);
 
+       if (tp->frto_counter)
+               frto_cwnd = tcp_process_frto(sk, flag);
        /* Guarantee sacktag reordering detection against wrap-arounds */
        if (before(tp->frto_highmark, tp->snd_una))
                tp->frto_highmark = 0;
-       if (tp->frto_counter)
-               frto_cwnd = tcp_process_frto(sk, flag);
 
        if (tcp_ack_is_dubious(sk, flag)) {
                /* Advance CWND, if state allows this. */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to