diff options
| author | Takashi Iwai <tiwai@suse.de> | 2012-05-21 12:45:18 +0200 | 
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2012-05-21 12:45:18 +0200 | 
| commit | 775b2449bdba7c97dda9f274c92bf7a83dac4142 (patch) | |
| tree | b4bee45c13762ea93642b1e38c62de454e51cf5d /net/core/skbuff.c | |
| parent | 21363cf0ca5c9c62e34e37422fb1d13d70d3de3c (diff) | |
| parent | 5fb86e5d4a951ddb0474cdfd809380c8e2a8d101 (diff) | |
| download | olio-linux-3.10-775b2449bdba7c97dda9f274c92bf7a83dac4142.tar.xz olio-linux-3.10-775b2449bdba7c97dda9f274c92bf7a83dac4142.zip  | |
Merge branch 'topic/asoc' into for-linus
Diffstat (limited to 'net/core/skbuff.c')
| -rw-r--r-- | net/core/skbuff.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index f223cdc75da..e59840010d4 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -952,9 +952,11 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail,  		goto adjust_others;  	} -	data = kmalloc(size + sizeof(struct skb_shared_info), gfp_mask); +	data = kmalloc(size + SKB_DATA_ALIGN(sizeof(struct skb_shared_info)), +		       gfp_mask);  	if (!data)  		goto nodata; +	size = SKB_WITH_OVERHEAD(ksize(data));  	/* Copy only real data... and, alas, header. This should be  	 * optimized for the cases when header is void. @@ -3161,6 +3163,8 @@ static void sock_rmem_free(struct sk_buff *skb)   */  int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)  { +	int len = skb->len; +  	if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=  	    (unsigned)sk->sk_rcvbuf)  		return -ENOMEM; @@ -3175,7 +3179,7 @@ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)  	skb_queue_tail(&sk->sk_error_queue, skb);  	if (!sock_flag(sk, SOCK_DEAD)) -		sk->sk_data_ready(sk, skb->len); +		sk->sk_data_ready(sk, len);  	return 0;  }  EXPORT_SYMBOL(sock_queue_err_skb);  |