On Thu, Mar 20, 2014 at 04:42:16PM +0000, Alan Cox wrote: > On Thu, 2014-03-20 at 11:34 -0500, Felipe Balbi wrote: > > Hi, > > > > when 8250 driver calls uart_write_wakeup(), the tty port lock is already > > taken. hci_ldisc.c's implementation of ->write_wakeup() calls > > tty->ops->write() to actually send the characters, but that call will > > try to acquire the same port lock again. > > > > Looking at other line disciplines that looks like a bug in hci_ldisc.c. > > Am I correct to assume that ->write_wakeup() is supposed to *just* > > wakeup the bottom half so we handle ->write() in another context ? > > > > Is it legal to call tty->ops->write() from within ->write_wakeup() ? > > It isn't because you might send all the bytes and go > > write > write_wakeup > write > write wakeup > ... > > and recurse cool, so there really is a bug in hci_ldisc. Marcel, any tips on how do you want this to be sorted out ? -- balbi
Attachment:
signature.asc
Description: Digital signature