aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2013-04-19 07:19:48 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-05-01 08:56:38 -0700
commit7c79dac82743cab718a07520617810eb5fb8eb56 (patch)
tree3402dc912235a28fdcdba1130d5d8fdd52c110cc /include
parenteaaeae50ea0230be49e4aca5ec48f6978537a242 (diff)
downloadkernel_samsung_smdk4412-7c79dac82743cab718a07520617810eb5fb8eb56.zip
kernel_samsung_smdk4412-7c79dac82743cab718a07520617810eb5fb8eb56.tar.gz
kernel_samsung_smdk4412-7c79dac82743cab718a07520617810eb5fb8eb56.tar.bz2
tcp: call tcp_replace_ts_recent() from tcp_ack()
[ Upstream commit 12fb3dd9dc3c64ba7d64cec977cca9b5fb7b1d4e ] commit bd090dfc634d (tcp: tcp_replace_ts_recent() should not be called from tcp_validate_incoming()) introduced a TS ecr bug in slow path processing. 1 A > B P. 1:10001(10000) ack 1 <nop,nop,TS val 1001 ecr 200> 2 B < A . 1:1(0) ack 1 win 257 <sack 9001:10001,TS val 300 ecr 1001> 3 A > B . 1:1001(1000) ack 1 win 227 <nop,nop,TS val 1002 ecr 200> 4 A > B . 1001:2001(1000) ack 1 win 227 <nop,nop,TS val 1002 ecr 200> (ecr 200 should be ecr 300 in packets 3 & 4) Problem is tcp_ack() can trigger send of new packets (retransmits), reflecting the prior TSval, instead of the TSval contained in the currently processed incoming packet. Fix this by calling tcp_replace_ts_recent() from tcp_ack() after the checks, but before the actions. Reported-by: Yuchung Cheng <ycheng@google.com> Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Neal Cardwell <ncardwell@google.com> Acked-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions