diff options
author | David S. Miller <davem@davemloft.net> | 2008-09-23 05:51:41 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-09-23 05:51:41 -0400 |
commit | 28e3487b7dd8a9791baac924bc887140ec747bed (patch) | |
tree | b32bacf3b9374cf3e7108f5489aebb79b23aab92 /net/ipv4/tcp_input.c | |
parent | 77d40a0952b16e020ce07c4cf9fb22024448275b (diff) |
tcp: Fix queue traversal in tcp_use_frto().
We must check tcp_skb_is_last() before doing a tcp_write_queue_next().
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index cbfe13d5f423..3b76bce769dd 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -1746,6 +1746,8 @@ int tcp_use_frto(struct sock *sk) | |||
1746 | return 0; | 1746 | return 0; |
1747 | 1747 | ||
1748 | skb = tcp_write_queue_head(sk); | 1748 | skb = tcp_write_queue_head(sk); |
1749 | if (tcp_skb_is_last(sk, skb)) | ||
1750 | return 1; | ||
1749 | skb = tcp_write_queue_next(sk, skb); /* Skips head */ | 1751 | skb = tcp_write_queue_next(sk, skb); /* Skips head */ |
1750 | tcp_for_write_queue_from(skb, sk) { | 1752 | tcp_for_write_queue_from(skb, sk) { |
1751 | if (skb == tcp_send_head(sk)) | 1753 | if (skb == tcp_send_head(sk)) |