forked from mirrors/linux
		
	ipv6: tcp: send consistent autoflowlabel in RST packets
Blamed commit added a txhash parameter to tcp_v6_send_response()
but forgot to update tcp_v6_send_reset() accordingly.
Fixes: aa51b80e1a ("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>
			
			
This commit is contained in:
		
							parent
							
								
									99d01d7481
								
							
						
					
					
						commit
						9258b8b1be
					
				
					 1 changed files with 4 additions and 1 deletions
				
			
		|  | @ -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: | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Eric Dumazet
						Eric Dumazet