spin_lock_irqsave(&nd->queue_lock, flags);
lp = nd->queue; /* get lp on top of queue */
- spin_lock_bh(&nd->queue->xmit_lock);
+ spin_lock(&nd->queue->xmit_lock);
while (isdn_net_lp_busy(nd->queue)) {
- spin_unlock_bh(&nd->queue->xmit_lock);
+ spin_unlock(&nd->queue->xmit_lock);
nd->queue = nd->queue->next;
if (nd->queue == lp) { /* not found -- should never happen */
lp = NULL;
goto errout;
}
- spin_lock_bh(&nd->queue->xmit_lock);
+ spin_lock(&nd->queue->xmit_lock);
}
lp = nd->queue;
nd->queue = nd->queue->next;
+ local_bh_disable();
errout:
spin_unlock_irqrestore(&nd->queue_lock, flags);
return lp;