]> err.no Git - linux-2.6/commit
[TCP]: Catch skb with S+L bugs earlier
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Mon, 30 Apr 2007 07:57:33 +0000 (00:57 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 30 Apr 2007 07:57:33 +0000 (00:57 -0700)
commit34588b4c046c34773e5a1a962da7b78b05c4d1bd
treed655bed4dfd053b4d2a30f647857300694d44c93
parent6aaf47fa48d3c44280810b1b470261d340e4ed87
[TCP]: Catch skb with S+L bugs earlier

SACKED_ACKED and LOST are mutually exclusive with SACK, thus
having their sum larger than packets_out is bug with SACK.
Eventually these bugs trigger traps in the tcp_clean_rtx_queue
with SACK but it's much more informative to do this here.

Non-SACK TCP, however, could get more than packets_out duplicate
ACKs which each increment sacked_out, so it makes sense to do
this kind of limitting for non-SACK TCP but not for SACK enabled
one. Perhaps the author had the opposite in mind but did the
logic accidently wrong way around? Anyway, the sacked_out
incrementer code for non-SACK already deals this issue before
calling sync_left_out so this trapping can be done
unconditionally.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h