skb = alloc_skb(MAX_TCP_HEADER, GFP_KERNEL); 
skb = alloc_skb_fclone(MAX_TCP_HEADER, GFP_KERNEL); 
void tcp_send_fin(struct sock *sk){	struct tcp_sock *tp = tcp_sk(sk);		struct sk_buff *skb = skb_peek_tail(&sk->sk_write_queue);	int mss_now;		/* Optimization, tack on the FIN if we have a queue of	 * unsent frames.  But be careful about outgoing SACKS	 * and IP options.	 */	mss_now = tcp_current_mss(sk, 1);	if (sk->sk_send_head != NULL) {		TCP_SKB_CB(skb)->flags |= TCPCB_FLAG_FIN;		TCP_SKB_CB(skb)->end_seq++;		tp->write_seq++;	} else {		/* Socket is locked, keep trying until memory is available. */		for (;;) {			skb = alloc_skb(MAX_TCP_HEADER, GFP_KERNEL);			if (skb)				break;			yield();		}		/* Reserve space for headers and prepare control bits. */		skb_reserve(skb, MAX_TCP_HEADER);		skb->csum = 0;		TCP_SKB_CB(skb)->flags = (TCPCB_FLAG_ACK | TCPCB_FLAG_FIN);		TCP_SKB_CB(skb)->sacked = 0;		skb_shinfo(skb)->tso_segs = 1;		skb_shinfo(skb)->tso_size = 0;		/* FIN eats a sequence byte, write_seq advanced by tcp_queue_skb(). */		TCP_SKB_CB(skb)->seq = tp->write_seq;		TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq + 1;		tcp_queue_skb(sk, skb);	}	__tcp_push_pending_frames(sk, tp, mss_now, TCP_NAGLE_OFF);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d179cd12928443f3ec29cfbc3567439644bd0afc/tcp_output.c/buggy/net/ipv4/tcp_output.c