|
@@ -429,13 +429,13 @@ static void slip_write_wakeup(struct tty_struct *tty)
|
|
if (!sl || sl->magic != SLIP_MAGIC || !netif_running(sl->dev))
|
|
if (!sl || sl->magic != SLIP_MAGIC || !netif_running(sl->dev))
|
|
return;
|
|
return;
|
|
|
|
|
|
- spin_lock(&sl->lock);
|
|
|
|
|
|
+ spin_lock_bh(&sl->lock);
|
|
if (sl->xleft <= 0) {
|
|
if (sl->xleft <= 0) {
|
|
/* Now serial buffer is almost free & we can start
|
|
/* Now serial buffer is almost free & we can start
|
|
* transmission of another packet */
|
|
* transmission of another packet */
|
|
sl->dev->stats.tx_packets++;
|
|
sl->dev->stats.tx_packets++;
|
|
clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
|
|
clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
|
|
- spin_unlock(&sl->lock);
|
|
|
|
|
|
+ spin_unlock_bh(&sl->lock);
|
|
sl_unlock(sl);
|
|
sl_unlock(sl);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -443,7 +443,7 @@ static void slip_write_wakeup(struct tty_struct *tty)
|
|
actual = tty->ops->write(tty, sl->xhead, sl->xleft);
|
|
actual = tty->ops->write(tty, sl->xhead, sl->xleft);
|
|
sl->xleft -= actual;
|
|
sl->xleft -= actual;
|
|
sl->xhead += actual;
|
|
sl->xhead += actual;
|
|
- spin_unlock(&sl->lock);
|
|
|
|
|
|
+ spin_unlock_bh(&sl->lock);
|
|
}
|
|
}
|
|
|
|
|
|
static void sl_tx_timeout(struct net_device *dev)
|
|
static void sl_tx_timeout(struct net_device *dev)
|