Messages in this thread | | | Subject | Re: hci_ldsic nested locking problem | From | Alan Cox <> | Date | Thu, 20 Mar 2014 16:42:16 +0000 |
| |
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
Alan
| |