newtp->bytes_acked = 0; 
struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req, struct sk_buff *skb){	struct sock *newsk = inet_csk_clone(sk, req, GFP_ATOMIC);	if (newsk != NULL) {		const struct inet_request_sock *ireq = inet_rsk(req);		struct tcp_request_sock *treq = tcp_rsk(req);		struct inet_connection_sock *newicsk = inet_csk(sk);		struct tcp_sock *newtp;		/* Now setup tcp_sock */		newtp = tcp_sk(newsk);		newtp->pred_flags = 0;		newtp->rcv_nxt = treq->rcv_isn + 1;		newtp->snd_nxt = newtp->snd_una = newtp->snd_sml = treq->snt_isn + 1;		tcp_prequeue_init(newtp);		tcp_init_wl(newtp, treq->snt_isn, treq->rcv_isn);		newtp->srtt = 0;		newtp->mdev = TCP_TIMEOUT_INIT;		newicsk->icsk_rto = TCP_TIMEOUT_INIT;		newtp->packets_out = 0;		newtp->left_out = 0;		newtp->retrans_out = 0;		newtp->sacked_out = 0;		newtp->fackets_out = 0;		newtp->snd_ssthresh = 0x7fffffff;		/* So many TCP implementations out there (incorrectly) count the		 * initial SYN frame in their delayed-ACK and congestion control		 * algorithms that we must have the following bandaid to talk		 * efficiently to them.  -DaveM		 */		newtp->snd_cwnd = 2;		newtp->snd_cwnd_cnt = 0;		newtp->frto_counter = 0;		newtp->frto_highmark = 0;		newicsk->icsk_ca_ops = &tcp_init_congestion_ops;		tcp_set_ca_state(newsk, TCP_CA_Open);		tcp_init_xmit_timers(newsk);		skb_queue_head_init(&newtp->out_of_order_queue);		newtp->rcv_wup = treq->rcv_isn + 1;		newtp->write_seq = treq->snt_isn + 1;		newtp->pushed_seq = newtp->write_seq;		newtp->copied_seq = treq->rcv_isn + 1;		newtp->rx_opt.saw_tstamp = 0;		newtp->rx_opt.dsack = 0;		newtp->rx_opt.eff_sacks = 0;		newtp->rx_opt.num_sacks = 0;		newtp->urg_data = 0;		if (sock_flag(newsk, SOCK_KEEPOPEN))			inet_csk_reset_keepalive_timer(newsk,						       keepalive_time_when(newtp));		newtp->rx_opt.tstamp_ok = ireq->tstamp_ok;		if((newtp->rx_opt.sack_ok = ireq->sack_ok) != 0) {			if (sysctl_tcp_fack)				newtp->rx_opt.sack_ok |= 2;		}		newtp->window_clamp = req->window_clamp;		newtp->rcv_ssthresh = req->rcv_wnd;		newtp->rcv_wnd = req->rcv_wnd;		newtp->rx_opt.wscale_ok = ireq->wscale_ok;		if (newtp->rx_opt.wscale_ok) {			newtp->rx_opt.snd_wscale = ireq->snd_wscale;			newtp->rx_opt.rcv_wscale = ireq->rcv_wscale;		} else {			newtp->rx_opt.snd_wscale = newtp->rx_opt.rcv_wscale = 0;			newtp->window_clamp = min(newtp->window_clamp, 65535U);		}		newtp->snd_wnd = ntohs(skb->h.th->window) << newtp->rx_opt.snd_wscale;		newtp->max_window = newtp->snd_wnd;		if (newtp->rx_opt.tstamp_ok) {			newtp->rx_opt.ts_recent = req->ts_recent;			newtp->rx_opt.ts_recent_stamp = xtime.tv_sec;			newtp->tcp_header_len = sizeof(struct tcphdr) + TCPOLEN_TSTAMP_ALIGNED;		} else {			newtp->rx_opt.ts_recent_stamp = 0;			newtp->tcp_header_len = sizeof(struct tcphdr);		}		if (skb->len >= TCP_MIN_RCVMSS+newtp->tcp_header_len)			newicsk->icsk_ack.last_seg_size = skb->len - newtp->tcp_header_len;		newtp->rx_opt.mss_clamp = req->mss;		TCP_ECN_openreq_child(newtp, req);		if (newtp->ecn_flags&TCP_ECN_OK)			sock_set_flag(newsk, SOCK_NO_LARGESEND);		TCP_INC_STATS_BH(TCP_MIB_PASSIVEOPENS);	}	return newsk;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/9772efb970780aeed488c19d8b4afd46c3b484af/tcp_minisocks.c/buggy/net/ipv4/tcp_minisocks.c