On 02/22/2017 04:17 PM, Eric Dumazet wrote: > On Wed, 2017-02-22 at 13:23 +0300, Alexey Kodanev wrote: >> ... >> >> diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c >> index fe9da4f..c5169b8 100644 >> --- a/net/ipv4/tcp_ipv4.c >> +++ b/net/ipv4/tcp_ipv4.c >> @@ -145,6 +145,7 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr >> *uaddr, int addr_len) >> struct flowi4 *fl4; >> struct rtable *rt; >> int err; >> + u32 seq; >> struct ip_options_rcu *inet_opt; >> >> if (addr_len < sizeof(struct sockaddr_in)) >> @@ -232,12 +233,15 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr >> *uaddr, int addr_len) >> sk->sk_gso_type = SKB_GSO_TCPV4; >> sk_setup_caps(sk, &rt->dst); >> >> - if (!tp->write_seq && likely(!tp->repair)) >> - tp->write_seq = secure_tcp_sequence_number(inet->inet_saddr, >> - inet->inet_daddr, >> - inet->inet_sport, >> - usin->sin_port, >> - &tp->tsoffset); >> + if (likely(!tp->repair)) { >> + seq = secure_tcp_sequence_number(inet->inet_saddr, >> + inet->inet_daddr, >> + inet->inet_sport, >> + usin->sin_port, >> + &tp->tsoffset); >> + if (!tp->write_seq) >> + tp->write_seq = seq; >> + } >> > Nice catch ! > > secure_tcp_sequence_number() could be renamed, because it has two > purposes really.
What about "secure_tcp_seq_and_tsoff(...)" ? Also, tcp_v4_init_sequence(...) -> tcp_v4_init_seq_and_tsoff(...) tcp_v6_init_sequence(...) -> tcp_v6_init_seq_and_tsoff(...) Thanks, Alexey