aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_ipv4.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r--net/ipv4/tcp_ipv4.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 8c124d4ef4b7..9a89b8deafae 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)
145 struct flowi4 *fl4; 145 struct flowi4 *fl4;
146 struct rtable *rt; 146 struct rtable *rt;
147 int err; 147 int err;
148 u32 seq;
148 struct ip_options_rcu *inet_opt; 149 struct ip_options_rcu *inet_opt;
149 struct inet_timewait_death_row *tcp_death_row = &sock_net(sk)->ipv4.tcp_death_row; 150 struct inet_timewait_death_row *tcp_death_row = &sock_net(sk)->ipv4.tcp_death_row;
150 151
@@ -234,12 +235,15 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
234 sk_setup_caps(sk, &rt->dst); 235 sk_setup_caps(sk, &rt->dst);
235 rt = NULL; 236 rt = NULL;
236 237
237 if (!tp->write_seq && likely(!tp->repair)) 238 if (likely(!tp->repair)) {
238 tp->write_seq = secure_tcp_sequence_number(inet->inet_saddr, 239 seq = secure_tcp_sequence_number(inet->inet_saddr,
239 inet->inet_daddr, 240 inet->inet_daddr,
240 inet->inet_sport, 241 inet->inet_sport,
241 usin->sin_port, 242 usin->sin_port,
242 &tp->tsoffset); 243 &tp->tsoffset);
244 if (!tp->write_seq)
245 tp->write_seq = seq;
246 }
243 247
244 inet->inet_id = tp->write_seq ^ jiffies; 248 inet->inet_id = tp->write_seq ^ jiffies;
245 249