diff options
Diffstat (limited to 'drivers/net/netdevsim/netdev.c')
| -rw-r--r-- | drivers/net/netdevsim/netdev.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index 39fe28af48b9..0178219f0db5 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -710,9 +710,13 @@ static struct nsim_rq *nsim_queue_alloc(void)  static void nsim_queue_free(struct net_device *dev, struct nsim_rq *rq)  {  	hrtimer_cancel(&rq->napi_timer); -	local_bh_disable(); -	dev_dstats_rx_dropped_add(dev, rq->skb_queue.qlen); -	local_bh_enable(); + +	if (rq->skb_queue.qlen) { +		local_bh_disable(); +		dev_dstats_rx_dropped_add(dev, rq->skb_queue.qlen); +		local_bh_enable(); +	} +  	skb_queue_purge_reason(&rq->skb_queue, SKB_DROP_REASON_QUEUE_PURGE);  	kfree(rq);  } | 
