@@ -275,14 +275,17 @@ static void defer_bh(struct usbnet *dev, struct sk_buff *skb, struct sk_buff_hea
spin_lock_irqsave(&list->lock, flags);
__skb_unlink(skb, list);
spin_unlock(&list->lock);
spin_lock(&dev->done.lock);
__skb_queue_tail(&dev->done, skb);
if (dev->done.qlen == 1)
if (dev->done.qlen == 1) {
spin_unlock_irqrestore(&dev->done.lock, flags);
tasklet_schedule(&dev->bh);
return;
}
/* some work can't be done in tasklets, so we use keventd
*
* NOTE: annoying asymmetry: if it's active, schedule_work() fails,