From: Eric W. Biederman Date: Tue, 1 Apr 2014 19:21:02 +0000 (-0700) Subject: netpoll: Use skb_irq_freeable to make zap_completion_queue safe. X-Git-Tag: v4.9.8~6652^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b1586f099ba897542ece36e8a23c1a62907261ef;p=platform%2Fkernel%2Flinux-rpi3.git netpoll: Use skb_irq_freeable to make zap_completion_queue safe. Replace the test in zap_completion_queue to test when it is safe to free skbs in hard irq context with skb_irq_freeable ensuring we only free skbs when it is safe, and removing the possibility of subtle problems. Signed-off-by: "Eric W. Biederman" Signed-off-by: David S. Miller --- diff --git a/net/core/netpoll.c b/net/core/netpoll.c index ed7740f..e33937f 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -270,7 +270,7 @@ static void zap_completion_queue(void) while (clist != NULL) { struct sk_buff *skb = clist; clist = clist->next; - if (skb->destructor) { + if (!skb_irq_freeable(skb)) { atomic_inc(&skb->users); dev_kfree_skb_any(skb); /* put this one back */ } else {