Subject: Re: Odd crashes in tcp_output (2.0ish)
To: Greg Troxel <gdt@ir.bbn.com>
From: Charles M. Hannum <abuse@spamalicious.com>
List: tech-net
Date: 01/26/2005 17:37:44
On Wednesday 26 January 2005 16:43, Greg Troxel wrote:
> Any clues? Is this a trashed tcp control block, or did a negative rtt
> creep in somehow? Should the RTT-computing logic check for
> preposterous RTTs (takes unsigned, but as far as I can tell must
> tcp_xmit_timer have got -9 as an argument.
I believe this may happen because we don't do enough range checking in the
RFC1323 case. To wit:
if (opti.ts_present && opti.ts_ecr)
tcp_xmit_timer(tp,
TCP_TIMESTAMP(tp) - opti.ts_ecr +
1);
...
if (opti.ts_present && opti.ts_ecr)
tcp_xmit_timer(tp, TCP_TIMESTAMP(tp) - opti.ts_ecr +
1);
If the other side screws with the echoed time stamp, it could cause us to
calculate a negative RTT.
Unfortunately, turning off net.inet.tcp.rfc1323 will probably not work as a
workaround, because it does not disable *reception* of time stamp options.