net: tcp: fix crashes trying to free half-baked MTU probes
authorJakub Kicinski <kuba@kernel.org>
Tue, 10 Oct 2023 17:36:51 +0000 (10:36 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 12 Oct 2023 00:24:46 +0000 (17:24 -0700)
tcp_stream_alloc_skb() initializes the skb to use tcp_tsorted_anchor
which is a union with the destructor. We need to clean that
TCP-iness up before freeing.

Fixes: 736013292e3c ("tcp: let tcp_mtu_probe() build headless packets")
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20231010173651.3990234-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/tcp_output.c

index aa0fc8c766e509c0424b989edbb02322c681eb53..9c8c42c280b7638f0f4d94d68cd2c73e3c6c2bcc 100644 (file)
@@ -2456,6 +2456,7 @@ static int tcp_mtu_probe(struct sock *sk)
 
        /* build the payload, and be prepared to abort if this fails. */
        if (tcp_clone_payload(sk, nskb, probe_size)) {
+               tcp_skb_tsorted_anchor_cleanup(nskb);
                consume_skb(nskb);
                return -1;
        }