lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 16 Nov 2007 17:29:46 +0200 (EET) From: "Ilpo Järvinen" <ilpo.jarvinen@...sinki.fi> To: David Miller <davem@...emloft.net> cc: Netdev <netdev@...r.kernel.org> Subject: [PATCH net-2.6.25] [TCP]: Correct DSACK check placing Previously one of the in-block skip branches was missing it. Also, drop it from tail-fully-processed case because the next iteration will do exactly the same thing, i.e., process the SACK block that contains the DSACK information. Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@...sinki.fi> --- net/ipv4/tcp_input.c | 15 +++++---------- 1 files changed, 5 insertions(+), 10 deletions(-) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index cd6924e..dae000b 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -1554,20 +1554,15 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_ } /* Rest of the block already fully processed? */ - if (!after(end_seq, cache->end_seq)) { - skb = tcp_maybe_skipping_dsack(skb, sk, next_dup, cache->end_seq, - &fack_count, &reord, &flag); + if (!after(end_seq, cache->end_seq)) goto advance_sp; - } + + skb = tcp_maybe_skipping_dsack(skb, sk, next_dup, cache->end_seq, + &fack_count, &reord, &flag); /* ...tail remains todo... */ if (TCP_SKB_CB(tp->highest_sack)->end_seq == cache->end_seq) { - /* ...but better entrypoint exists! Check that DSACKs are - * properly accounted while skipping here - */ - tcp_maybe_skipping_dsack(skb, sk, next_dup, cache->end_seq, - &fack_count, &reord, &flag); - + /* ...but better entrypoint exists! */ skb = tcp_write_queue_next(sk, tp->highest_sack); fack_count = tp->fackets_out; cache++; -- 1.5.0.6
Powered by blists - more mailing lists