struct sk_buff *pskb_copy(struct sk_buff *skb, int gfp_mask) 
struct sk_buff *pskb_copy(struct sk_buff *skb, unsigned int __nocast gfp_mask) 
struct sk_buff *pskb_copy(struct sk_buff *skb, int gfp_mask){	/*	 *	Allocate the copy buffer	 */	struct sk_buff *n = alloc_skb(skb->end - skb->head, gfp_mask);	if (!n)		goto out;	/* Set the data pointer */	skb_reserve(n, skb->data - skb->head);	/* Set the tail pointer and length */	skb_put(n, skb_headlen(skb));	/* Copy the bytes */	memcpy(n->data, skb->data, n->len);	n->csum	     = skb->csum;	n->ip_summed = skb->ip_summed;	n->data_len  = skb->data_len;	n->len	     = skb->len;	if (skb_shinfo(skb)->nr_frags) {		int i;		for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {			skb_shinfo(n)->frags[i] = skb_shinfo(skb)->frags[i];			get_page(skb_shinfo(n)->frags[i].page);		}		skb_shinfo(n)->nr_frags = i;	}	if (skb_shinfo(skb)->frag_list) {		skb_shinfo(n)->frag_list = skb_shinfo(skb)->frag_list;		skb_clone_fraglist(n);	}	copy_skb_header(n, skb);out:	return n;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/86a76caf8705e3524e15f343f3c4806939a06dc8/skbuff.c/clean/net/core/skbuff.c