linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 0/6] rfcomm: Implement rfcomm as a proper tty_port
@ 2013-07-29 15:08 Gianluca Anzolin
  2013-07-29 15:08 ` [PATCH v5 1/6] rfcomm: Take proper tty_struct references Gianluca Anzolin
                   ` (6 more replies)
  0 siblings, 7 replies; 17+ messages in thread
From: Gianluca Anzolin @ 2013-07-29 15:08 UTC (permalink / raw)
  To: gustavo; +Cc: peter, marcel, linux-bluetooth, gregkh, jslaby, Gianluca Anzolin

This patchset addresses an issue with the rfcomm tty driver in the
current stable kernels that manifests itself as a sudden lockup of the
whole machine or as a OOPS if we are lucky enough (I wasn't).

Triggering the problem is very easy:

1) establish a bluetooth connection with a bluetooth host
2) open the tty it provides with some program
3) turn off the bluetooth host or take it out of range

After a timeout the machine freezes.

Another way to trigger these lockups is to simply release the rfcomm
tty.

This happens beacuse the underlying tty_struct objects and tty_port
objects are freed while being used: the code doesn't take proper
references to them.

The following patches address the problem by implementing a proper
tty_port driver for rfcomm.

There are still some issues left: one relevant to flow control (which is
also missing in the current code) and another relevant to a corner case
in rfcomm_dev_state_change() that I intend to fix with a future patch.
They are commented with a FIXME.

Changes from v4:
  [PATCH 3/6]: left the debug message in rfcomm_tty_open()
  [PATCH 5/6]: always use !test_and_set_bit() to release the tty_port

Thank you,
Gianluca

Gianluca Anzolin (6):
  rfcomm: Take proper tty_struct references
  rfcomm: Remove the device from the list in the destructor
  rfcomm: Move the tty initialization and cleanup out of open/close
  rfcomm: Implement .activate, .shutdown and .carrier_raised methods
  rfcomm: Fix the reference counting of tty_port
  rfcomm: Purge the dlc->tx_queue to avoid circular dependency

 net/bluetooth/rfcomm/tty.c | 271 +++++++++++++++++++++------------------------
 1 file changed, 126 insertions(+), 145 deletions(-)

-- 
1.8.3.4

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2013-08-30 22:02 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-29 15:08 [PATCH v5 0/6] rfcomm: Implement rfcomm as a proper tty_port Gianluca Anzolin
2013-07-29 15:08 ` [PATCH v5 1/6] rfcomm: Take proper tty_struct references Gianluca Anzolin
2013-07-29 15:08 ` [PATCH v5 2/6] rfcomm: Remove the device from the list in the destructor Gianluca Anzolin
2013-07-29 15:08 ` [PATCH v5 3/6] rfcomm: Move the tty initialization and cleanup out of open/close Gianluca Anzolin
2013-07-29 15:08 ` [PATCH v5 4/6] rfcomm: Implement .activate, .shutdown and .carrier_raised methods Gianluca Anzolin
2013-07-29 15:08 ` [PATCH v5 5/6] rfcomm: Fix the reference counting of tty_port Gianluca Anzolin
2013-07-29 15:08 ` [PATCH v5 6/6] rfcomm: Purge the dlc->tx_queue to avoid circular dependency Gianluca Anzolin
2013-08-20  9:21   ` Gustavo Padovan
2013-08-21  8:41     ` Gianluca Anzolin
2013-07-31 17:50 ` [PATCH v5 0/6] rfcomm: Implement rfcomm as a proper tty_port Peter Hurley
2013-08-19 20:20   ` Peter Hurley
2013-08-27 13:57     ` Alexander Holler
2013-08-27 17:50       ` Peter Hurley
2013-08-28 11:24         ` Alexander Holler
2013-08-30 17:49         ` Gianluca Anzolin
2013-08-30 21:26           ` Alexander Holler
2013-08-30 22:02           ` Peter Hurley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).