|
@@ -145,6 +145,7 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
|
struct flowi4 *fl4;
|
|
struct flowi4 *fl4;
|
|
struct rtable *rt;
|
|
struct rtable *rt;
|
|
int err;
|
|
int err;
|
|
|
|
+ u32 seq;
|
|
struct ip_options_rcu *inet_opt;
|
|
struct ip_options_rcu *inet_opt;
|
|
struct inet_timewait_death_row *tcp_death_row = &sock_net(sk)->ipv4.tcp_death_row;
|
|
struct inet_timewait_death_row *tcp_death_row = &sock_net(sk)->ipv4.tcp_death_row;
|
|
|
|
|
|
@@ -234,12 +235,15 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
|
sk_setup_caps(sk, &rt->dst);
|
|
sk_setup_caps(sk, &rt->dst);
|
|
rt = NULL;
|
|
rt = NULL;
|
|
|
|
|
|
- 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;
|
|
|
|
+ }
|
|
|
|
|
|
inet->inet_id = tp->write_seq ^ jiffies;
|
|
inet->inet_id = tp->write_seq ^ jiffies;
|
|
|
|
|