linux/drivers/bluetooth
Alan Cox c65c9bc3ef tty: rewrite the ldisc locking
There are several pretty much unfixable races in the old ldisc code, especially
with respect to pty behaviour and also to hangup. It's easier to rewrite the
code than simply try and patch it up.

This patch
- splits the ldisc from the tty (so we will be able to refcount it more cleanly
  later)
- introduces a mutex lock for ldisc changing on an active device
- fixes the complete mess that hangup caused
- implements hopefully correct setldisc/close/hangup locking

There are still some problems around pty pairs that have always been there but
at least it is now possible to understand the code and fix further problems.

This fixes the following known bugs
- hang up can leak ldisc references
- hang up may not call open/close on ldisc in a matched way
- pty/tty pairs can deadlock during an ldisc change
- reading the ldisc proc files can cause every ldisc to be loaded

and probably a few other of the mysterious ldisc race reports.

I'm sure it also adds the odd new one.

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-06-11 08:51:01 -07:00
..
bcm203x.c Bluetooth: Enable per-module dynamic debug messages 2008-11-30 12:17:28 +01:00
bfusb.c Bluetooth: Remove some pointless conditionals before kfree_skb() 2009-02-27 06:14:50 +01:00
bluecard_cs.c pcmcia: IRQ_TYPE_EXCLUSIVE is long obsoleted 2008-10-17 23:07:10 +02:00
bpa10x.c Bluetooth: Enable per-module dynamic debug messages 2008-11-30 12:17:28 +01:00
bt3c_cs.c Bluetooth: Eliminate a sparse warning in bt3c driver 2009-02-27 06:14:35 +01:00
btsdio.c Bluetooth: Enable per-module dynamic debug messages 2008-11-30 12:17:28 +01:00
btuart_cs.c pcmcia: IRQ_TYPE_EXCLUSIVE is long obsoleted 2008-10-17 23:07:10 +02:00
btusb.c Bluetooth: Submit bulk URBs along with interrupt URBs 2009-02-27 06:14:36 +01:00
dtl1_cs.c pcmcia: IRQ_TYPE_EXCLUSIVE is long obsoleted 2008-10-17 23:07:10 +02:00
hci_bcsp.c Bluetooth: Enable per-module dynamic debug messages 2008-11-30 12:17:28 +01:00
hci_h4.c Bluetooth: Remove some pointless conditionals before kfree_skb() 2009-02-27 06:14:50 +01:00
hci_ldisc.c tty: rewrite the ldisc locking 2009-06-11 08:51:01 -07:00
hci_ll.c Bluetooth: Remove some pointless conditionals before kfree_skb() 2009-02-27 06:14:50 +01:00
hci_uart.h [Bluetooth] Add UART driver for Texas Instruments' BRF63xx chips 2007-10-22 02:59:44 -07:00
hci_vhci.c Bluetooth: Enable per-module dynamic debug messages 2008-11-30 12:17:28 +01:00
Kconfig Bluetooth: Remove deprecated hci_usb driver 2008-11-30 12:17:21 +01:00
Makefile Bluetooth: Remove deprecated hci_usb driver 2008-11-30 12:17:21 +01:00