diff options
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r-- | net/core/skbuff.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 346d3e85dfbc..b1be7c01efe2 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -3754,8 +3754,11 @@ struct sk_buff *sock_dequeue_err_skb(struct sock *sk) | |||
3754 | 3754 | ||
3755 | spin_lock_irqsave(&q->lock, flags); | 3755 | spin_lock_irqsave(&q->lock, flags); |
3756 | skb = __skb_dequeue(q); | 3756 | skb = __skb_dequeue(q); |
3757 | if (skb && (skb_next = skb_peek(q))) | 3757 | if (skb && (skb_next = skb_peek(q))) { |
3758 | icmp_next = is_icmp_err_skb(skb_next); | 3758 | icmp_next = is_icmp_err_skb(skb_next); |
3759 | if (icmp_next) | ||
3760 | sk->sk_err = SKB_EXT_ERR(skb_next)->ee.ee_origin; | ||
3761 | } | ||
3759 | spin_unlock_irqrestore(&q->lock, flags); | 3762 | spin_unlock_irqrestore(&q->lock, flags); |
3760 | 3763 | ||
3761 | if (is_icmp_err_skb(skb) && !icmp_next) | 3764 | if (is_icmp_err_skb(skb) && !icmp_next) |