From be3d7ee4a44bc8ed6d9bba7fefdc7b1099fb694a Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Fri, 6 Apr 2012 10:49:10 +0200 Subject: [PATCH] --- yaml --- r: 298787 b: refs/heads/master c: 110c43304db6f06490961529536c362d9ac5732f h: refs/heads/master i: 298785: 32410840e86947de1bcc901f72ef978b0748f645 298783: 4304780ef703adf7fe6704509f1fbae063ea1416 v: v3 --- [refs] | 2 +- trunk/net/core/skbuff.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 310a9df0b504..2923fda0bc5b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4a7e7c2ad540e54c75489a70137bf0ec15d3a127 +refs/heads/master: 110c43304db6f06490961529536c362d9ac5732f diff --git a/trunk/net/core/skbuff.c b/trunk/net/core/skbuff.c index f223cdc75da6..baf8d281152c 100644 --- a/trunk/net/core/skbuff.c +++ b/trunk/net/core/skbuff.c @@ -3161,6 +3161,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 +3177,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);