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 linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 27 Sep 2010 15:22:09 +0300 (EEST) From: "Ilpo Järvinen" <ilpo.jarvinen@...sinki.fi> To: Yuchung Cheng <ycheng@...gle.com> cc: David Miller <davem@...emloft.net>, Netdev <netdev@...r.kernel.org> Subject: Re: [PATCH] fix TSO FACK loss marking in tcp_mark_head_lost On Fri, 24 Sep 2010, Yuchung Cheng wrote: > When TCP uses FACK algorithm to mark lost packets in > tcp_mark_head_lost(), if the number of packets in the (TSO) skb is > greater than the number of packets that should be marked lost, TCP > incorrectly exits the loop and marks no packets lost in the skb. This > underestimates tp->lost_out and affects the recovery/retransmission. > This patch fargments the skb and marks the correct amount of packets > lost. > > Signed-off-by: Yuchung Cheng <ycheng@...gle.com> > --- > net/ipv4/tcp_input.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c > index 1bc87a0..e4f472e 100644 > --- a/net/ipv4/tcp_input.c > +++ b/net/ipv4/tcp_input.c > @@ -2532,7 +2532,8 @@ static void tcp_mark_head_lost(struct sock *sk, int packets) > cnt += tcp_skb_pcount(skb); > > if (cnt > packets) { > - if (tcp_is_sack(tp) || (oldcnt >= packets)) > + if ((tcp_is_sack(tp) && !tcp_is_fack(tp)) || > + (oldcnt >= packets)) > break; > > mss = skb_shinfo(skb)->gso_size; > Acked-by: Ilpo Järvinen <ilpo.jarvinen@...sinki.fi> -- i.
Powered by blists - more mailing lists