]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: tcp_fragment() should not assume rtx skbs
authorEric Dumazet <edumazet@google.com>
Fri, 3 Nov 2017 01:10:03 +0000 (18:10 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 Nov 2017 07:02:56 +0000 (16:02 +0900)
commita860f151c1ce94762f3b8bf68a79b3dde5d762d8
treec960635bc9e1813044d72d838df112acc04fc9b2
parentf770abe546eed71f6315c181db9146e04d58ec72
tcp: tcp_fragment() should not assume rtx skbs

While stress testing MTU probing, we had crashes in list_del() that we root-caused
to the fact that tcp_fragment() is unconditionally inserting the freshly allocated
skb into tsorted_sent_queue list.

But this list is supposed to contain skbs that were sent.
This was mostly harmless until MTU probing was enabled.

Fortunately we can use the tcp_queue enum added later (but in same linux version)
for rtx-rb-tree to fix the bug.

Fixes: c92e51b5ffaf ("tcp: new list for sent but unacked skbs for RACK recovery")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Cc: Soheil Hassas Yeganeh <soheil@google.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Priyaranjan Jha <priyarjha@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c