diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index c499b5c69bedbce96611baaec02eb9cfcb0798a6..f63a70be3cd09f70074375e8027f00451c2227a7 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -816,11 +816,7 @@ void netpoll_cleanup(struct netpoll *np)
 				cancel_rearming_delayed_work(&npinfo->tx_work);
 
 				/* clean after last, unfinished work */
-				if (!skb_queue_empty(&npinfo->txq)) {
-					struct sk_buff *skb;
-					skb = __skb_dequeue(&npinfo->txq);
-					kfree_skb(skb);
-				}
+				__skb_queue_purge(&npinfo->txq);
 				kfree(npinfo);
 				np->dev->npinfo = NULL;
 			}