[AX25] mkiss: Drop spinlock before sleeping call.
With the previous missing-unlock fix the spinlock is dropped only after the tty->driver->write() call which might sleep. Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
09a626600b
commit
c1854ebc7f
|
@ -515,6 +515,7 @@ static void ax_encaps(struct net_device *dev, unsigned char *icp, int len)
|
||||||
count = kiss_esc(p, (unsigned char *)ax->xbuff, len);
|
count = kiss_esc(p, (unsigned char *)ax->xbuff, len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
spin_unlock_bh(&ax->buflock);
|
||||||
|
|
||||||
set_bit(TTY_DO_WRITE_WAKEUP, &ax->tty->flags);
|
set_bit(TTY_DO_WRITE_WAKEUP, &ax->tty->flags);
|
||||||
actual = ax->tty->driver->write(ax->tty, ax->xbuff, count);
|
actual = ax->tty->driver->write(ax->tty, ax->xbuff, count);
|
||||||
|
@ -524,7 +525,6 @@ static void ax_encaps(struct net_device *dev, unsigned char *icp, int len)
|
||||||
ax->dev->trans_start = jiffies;
|
ax->dev->trans_start = jiffies;
|
||||||
ax->xleft = count - actual;
|
ax->xleft = count - actual;
|
||||||
ax->xhead = ax->xbuff + actual;
|
ax->xhead = ax->xbuff + actual;
|
||||||
spin_unlock_bh(&ax->buflock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Encapsulate an AX.25 packet and kick it into a TTY queue. */
|
/* Encapsulate an AX.25 packet and kick it into a TTY queue. */
|
||||||
|
|
Loading…
Reference in New Issue