This is a note to let you know that I've just added the patch titled

    sock: sock_dequeue_err_skb() needs hard irq safety

to the 3.19-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     sock-sock_dequeue_err_skb-needs-hard-irq-safety.patch
and it can be found in the queue-3.19 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From foo@baz Wed Mar 11 11:44:33 CET 2015
From: Eric Dumazet <[email protected]>
Date: Wed, 18 Feb 2015 05:47:55 -0800
Subject: sock: sock_dequeue_err_skb() needs hard irq safety

From: Eric Dumazet <[email protected]>

[ Upstream commit 997d5c3f4427f38562cbe207ce05bb25fdcb993b ]

Non NAPI drivers can call skb_tstamp_tx() and then sock_queue_err_skb()
from hard IRQ context.

Therefore, sock_dequeue_err_skb() needs to block hard irq or
corruptions or hangs can happen.

Signed-off-by: Eric Dumazet <[email protected]>
Fixes: 364a9e93243d1 ("sock: deduplicate errqueue dequeue")
Fixes: cb820f8e4b7f7 ("net: Provide a generic socket error queue delivery 
method for Tx time stamps.")
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
 net/core/skbuff.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3623,13 +3623,14 @@ struct sk_buff *sock_dequeue_err_skb(str
 {
        struct sk_buff_head *q = &sk->sk_error_queue;
        struct sk_buff *skb, *skb_next;
+       unsigned long flags;
        int err = 0;
 
-       spin_lock_bh(&q->lock);
+       spin_lock_irqsave(&q->lock, flags);
        skb = __skb_dequeue(q);
        if (skb && (skb_next = skb_peek(q)))
                err = SKB_EXT_ERR(skb_next)->ee.ee_errno;
-       spin_unlock_bh(&q->lock);
+       spin_unlock_irqrestore(&q->lock, flags);
 
        sk->sk_err = err;
        if (err)


Patches currently in stable-queue which might be from [email protected] are

queue-3.19/net-pktgen-disable-xmit_clone-on-virtual-devices.patch
queue-3.19/net-do-not-use-rcu-in-rtnl_dump_ifinfo.patch
queue-3.19/flowcache-fix-kernel-panic-in-flow_cache_flush_task.patch
queue-3.19/tcp-make-sure-skb-is-not-shared-before-using-skb_get.patch
queue-3.19/sock-sock_dequeue_err_skb-needs-hard-irq-safety.patch
queue-3.19/macvtap-make-sure-neighbour-code-can-push-ethernet-header.patch
queue-3.19/ipv4-ip_check_defrag-should-correctly-check-return-value-of-skb_copy_bits.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to