• Eric Dumazet's avatar
    tcp: tcp_fragment() should not assume rtx skbs · f67971e6
    Eric Dumazet authored
    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: e2080072 ("tcp: new list for sent but unacked skbs for RACK recovery")
    Signed-off-by: default avatarEric 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: default avatarNeal Cardwell <ncardwell@google.com>
    Acked-by: default avatarSoheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f67971e6
tcp_output.c 109 KB