[Cerowrt-devel] instruction traps on tcp_rcv - bug 360 regression - reopened

Robert Bradley robert.bradley1 at gmail.com
Sun Dec 22 14:26:33 PST 2013


On 22/12/13 21:35, Dave Taht wrote:
> http://www.bufferbloat.net/issues/360
>
> I would be very reluctant to take seriously any benchmarks going to
> the router until this one is quashed. Really bad behavior (I put a
> plot up on the bug)
>
> Stuff going through the router appears to be sane, but if you are monitoring
> the router at the same time (like via ssh or a web page) there are
> side effects visible at higher rates.
>
> I am hopefully getting setup to do ipv6 again soon so as to make sure
> all those bugs remain squashed too....
>

It looks like tcp_parse_aligned_timestamp() in net/ipv4/tcp_input.c has
acquired an if(*ptr) statement between 3.8 and 3.10.  That bug had been
annoying me for a while...

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 3d67689..c6496eb 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -3632,7 +3632,7 @@ static bool tcp_parse_aligned_timestamp(struct
tcp_sock *tp, const struct tcphdr
                ++ptr;
                tp->rx_opt.rcv_tsval = get_unaligned_be32(ptr);
                ++ptr;
-               if (*ptr)
+               if (net_hdr_word(ptr))
                        tp->rx_opt.rcv_tsecr = get_unaligned_be32(ptr) -
                                               tp->tsoffset;
                else

-- 
Robert Bradley



More information about the Cerowrt-devel mailing list