int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, int gfp_mask) 
int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, unsigned int __nocast gfp_mask) 
int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, int gfp_mask){	int i;	u8 *data;	int size = nhead + (skb->end - skb->head) + ntail;	long off;	if (skb_shared(skb))		BUG();	size = SKB_DATA_ALIGN(size);	data = kmalloc(size + sizeof(struct skb_shared_info), gfp_mask);	if (!data)		goto nodata;	/* Copy only real data... and, alas, header. This should be	 * optimized for the cases when header is void. */	memcpy(data + nhead, skb->head, skb->tail - skb->head);	memcpy(data + size, skb->end, sizeof(struct skb_shared_info));	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)		get_page(skb_shinfo(skb)->frags[i].page);	if (skb_shinfo(skb)->frag_list)		skb_clone_fraglist(skb);	skb_release_data(skb);	off = (data + nhead) - skb->head;	skb->head     = data;	skb->end      = data + size;	skb->data    += off;	skb->tail    += off;	skb->mac.raw += off;	skb->h.raw   += off;	skb->nh.raw  += off;	skb->cloned   = 0;	skb->nohdr    = 0;	atomic_set(&skb_shinfo(skb)->dataref, 1);	return 0;nodata:	return -ENOMEM;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/86a76caf8705e3524e15f343f3c4806939a06dc8/skbuff.c/clean/net/core/skbuff.c