tcp_collapse(sk, sk->sk_receive_queue.next, 
tcp_collapse(sk, &sk->sk_receive_queue, sk->sk_receive_queue.next, 
static int tcp_prune_queue(struct sock *sk){	struct tcp_sock *tp = tcp_sk(sk); 	SOCK_DEBUG(sk, "prune_queue: c=%x\n", tp->copied_seq);	NET_INC_STATS_BH(LINUX_MIB_PRUNECALLED);	if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf)		tcp_clamp_window(sk, tp);	else if (tcp_memory_pressure)		tp->rcv_ssthresh = min(tp->rcv_ssthresh, 4U * tp->advmss);	tcp_collapse_ofo_queue(sk);	tcp_collapse(sk, sk->sk_receive_queue.next,		     (struct sk_buff*)&sk->sk_receive_queue,		     tp->copied_seq, tp->rcv_nxt);	sk_stream_mem_reclaim(sk);	if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf)		return 0;	/* Collapsing did not help, destructive actions follow.	 * This must not ever occur. */	/* First, purge the out_of_order queue. */	if (!skb_queue_empty(&tp->out_of_order_queue)) {		NET_INC_STATS_BH(LINUX_MIB_OFOPRUNED);		__skb_queue_purge(&tp->out_of_order_queue);		/* Reset SACK state.  A conforming SACK implementation will		 * do the same at a timeout based retransmit.  When a connection		 * is in a sad state like this, we care only about integrity		 * of the connection not performance.		 */		if (tp->rx_opt.sack_ok)			tcp_sack_reset(&tp->rx_opt);		sk_stream_mem_reclaim(sk);	}	if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf)		return 0;	/* If we are really being abused, tell the caller to silently	 * drop receive data on the floor.  It will get retransmitted	 * and hopefully then we'll have sufficient space.	 */	NET_INC_STATS_BH(LINUX_MIB_RCVPRUNED);	/* Massive buffer overcommit. */	tp->pred_flags = 0;	return -1;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8728b834b226ffcf2c94a58530090e292af2a7bf/tcp_input.c/clean/net/ipv4/tcp_input.c