vserver 1.9.5.x5
[linux-2.6.git] / drivers / isdn / i4l / isdn_net.h
index ebdcde3..bc2f0dd 100644 (file)
@@ -78,18 +78,19 @@ static __inline__ isdn_net_local * isdn_net_get_locked_lp(isdn_net_dev *nd)
 
        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;