diff options
Diffstat (limited to 'net/ipv4/tcp_minisocks.c')
| -rw-r--r-- | net/ipv4/tcp_minisocks.c | 44 | 
1 files changed, 6 insertions, 38 deletions
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c index b83a49cc381..05eaf890461 100644 --- a/net/ipv4/tcp_minisocks.c +++ b/net/ipv4/tcp_minisocks.c @@ -93,13 +93,12 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,  			   const struct tcphdr *th)  {  	struct tcp_options_received tmp_opt; -	const u8 *hash_location;  	struct tcp_timewait_sock *tcptw = tcp_twsk((struct sock *)tw);  	bool paws_reject = false;  	tmp_opt.saw_tstamp = 0;  	if (th->doff > (sizeof(*th) >> 2) && tcptw->tw_ts_recent_stamp) { -		tcp_parse_options(skb, &tmp_opt, &hash_location, 0, NULL); +		tcp_parse_options(skb, &tmp_opt, 0, NULL);  		if (tmp_opt.saw_tstamp) {  			tmp_opt.rcv_tsecr	-= tcptw->tw_ts_offset; @@ -388,32 +387,6 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,  		struct tcp_request_sock *treq = tcp_rsk(req);  		struct inet_connection_sock *newicsk = inet_csk(newsk);  		struct tcp_sock *newtp = tcp_sk(newsk); -		struct tcp_sock *oldtp = tcp_sk(sk); -		struct tcp_cookie_values *oldcvp = oldtp->cookie_values; - -		/* TCP Cookie Transactions require space for the cookie pair, -		 * as it differs for each connection.  There is no need to -		 * copy any s_data_payload stored at the original socket. -		 * Failure will prevent resuming the connection. -		 * -		 * Presumed copied, in order of appearance: -		 *	cookie_in_always, cookie_out_never -		 */ -		if (oldcvp != NULL) { -			struct tcp_cookie_values *newcvp = -				kzalloc(sizeof(*newtp->cookie_values), -					GFP_ATOMIC); - -			if (newcvp != NULL) { -				kref_init(&newcvp->kref); -				newcvp->cookie_desired = -						oldcvp->cookie_desired; -				newtp->cookie_values = newcvp; -			} else { -				/* Not Yet Implemented */ -				newtp->cookie_values = NULL; -			} -		}  		/* Now setup tcp_sock */  		newtp->pred_flags = 0; @@ -422,8 +395,7 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,  		newtp->rcv_nxt = treq->rcv_isn + 1;  		newtp->snd_sml = newtp->snd_una = -		newtp->snd_nxt = newtp->snd_up = -			treq->snt_isn + 1 + tcp_s_data_size(oldtp); +		newtp->snd_nxt = newtp->snd_up = treq->snt_isn + 1;  		tcp_prequeue_init(newtp);  		INIT_LIST_HEAD(&newtp->tsq_node); @@ -440,6 +412,7 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,  		newtp->fackets_out = 0;  		newtp->snd_ssthresh = TCP_INFINITE_SSTHRESH;  		tcp_enable_early_retrans(newtp); +		newtp->tlp_high_seq = 0;  		/* So many TCP implementations out there (incorrectly) count the  		 * initial SYN frame in their delayed-ACK and congestion control @@ -449,9 +422,6 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,  		newtp->snd_cwnd = TCP_INIT_CWND;  		newtp->snd_cwnd_cnt = 0; -		newtp->frto_counter = 0; -		newtp->frto_highmark = 0; -  		if (newicsk->icsk_ca_ops != &tcp_init_congestion_ops &&  		    !try_module_get(newicsk->icsk_ca_ops->owner))  			newicsk->icsk_ca_ops = &tcp_init_congestion_ops; @@ -459,8 +429,7 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,  		tcp_set_ca_state(newsk, TCP_CA_Open);  		tcp_init_xmit_timers(newsk);  		skb_queue_head_init(&newtp->out_of_order_queue); -		newtp->write_seq = newtp->pushed_seq = -			treq->snt_isn + 1 + tcp_s_data_size(oldtp); +		newtp->write_seq = newtp->pushed_seq = treq->snt_isn + 1;  		newtp->rx_opt.saw_tstamp = 0; @@ -537,7 +506,6 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,  			   bool fastopen)  {  	struct tcp_options_received tmp_opt; -	const u8 *hash_location;  	struct sock *child;  	const struct tcphdr *th = tcp_hdr(skb);  	__be32 flg = tcp_flag_word(th) & (TCP_FLAG_RST|TCP_FLAG_SYN|TCP_FLAG_ACK); @@ -547,7 +515,7 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,  	tmp_opt.saw_tstamp = 0;  	if (th->doff > (sizeof(struct tcphdr)>>2)) { -		tcp_parse_options(skb, &tmp_opt, &hash_location, 0, NULL); +		tcp_parse_options(skb, &tmp_opt, 0, NULL);  		if (tmp_opt.saw_tstamp) {  			tmp_opt.ts_recent = req->ts_recent; @@ -647,7 +615,7 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,  	 */  	if ((flg & TCP_FLAG_ACK) && !fastopen &&  	    (TCP_SKB_CB(skb)->ack_seq != -	     tcp_rsk(req)->snt_isn + 1 + tcp_s_data_size(tcp_sk(sk)))) +	     tcp_rsk(req)->snt_isn + 1))  		return sk;  	/* Also, it would be not so bad idea to check rcv_tsecr, which  |