ipv6: tcp: send consistent autoflowlabel in RST packets
authorEric Dumazet <edumazet@google.com>
Thu, 22 Sep 2022 16:50:36 +0000 (09:50 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 24 Sep 2022 04:00:25 +0000 (21:00 -0700)
Blamed commit added a txhash parameter to tcp_v6_send_response()
but forgot to update tcp_v6_send_reset() accordingly.

Fixes: aa51b80e1af4 ("ipv6: tcp: send consistent autoflowlabel in SYN_RECV state")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20220922165036.1795862-1-eric.dumazet@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/tcp_ipv6.c

index 06beed4..a8adda6 100644 (file)
@@ -1001,6 +1001,7 @@ static void tcp_v6_send_reset(const struct sock *sk, struct sk_buff *skb)
        __be32 label = 0;
        u32 priority = 0;
        struct net *net;
+       u32 txhash = 0;
        int oif = 0;
 
        if (th->rst)
@@ -1073,10 +1074,12 @@ static void tcp_v6_send_reset(const struct sock *sk, struct sk_buff *skb)
                        if (np->repflow)
                                label = ip6_flowlabel(ipv6h);
                        priority = sk->sk_priority;
+                       txhash = sk->sk_hash;
                }
                if (sk->sk_state == TCP_TIME_WAIT) {
                        label = cpu_to_be32(inet_twsk(sk)->tw_flowlabel);
                        priority = inet_twsk(sk)->tw_priority;
+                       txhash = inet_twsk(sk)->tw_txhash;
                }
        } else {
                if (net->ipv6.sysctl.flowlabel_reflect & FLOWLABEL_REFLECT_TCP_RESET)
@@ -1084,7 +1087,7 @@ static void tcp_v6_send_reset(const struct sock *sk, struct sk_buff *skb)
        }
 
        tcp_v6_send_response(sk, skb, seq, ack_seq, 0, 0, 0, oif, key, 1,
-                            ipv6_get_dsfield(ipv6h), label, priority, 0);
+                            ipv6_get_dsfield(ipv6h), label, priority, txhash);
 
 #ifdef CONFIG_TCP_MD5SIG
 out: