[lkml]   [2013]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[REGRESSION] rfcomm (userland) broken by commit 29cd718b

since commit 29cd718beba999bda4bdbbf59b5a4d25c07e1547 "rfcomm: don't
release the port in rfcomm_dev_state_change()" the userland utility
rfcomm (both from bluez 4.101 and 5.12) is broken.

In detail the following note in the patch

Am 19.09.2013 18:24, schrieb Gustavo Padovan:
> Hi Gianluca,
> 2013-08-27 Gianluca Anzolin <>:
>> When the dlc is closed, rfcomm_dev_state_change() tries to release the
>> port in the case it cannot get a reference to the tty. However this is
>> racy and not even needed.
>> Infact as Peter Hurley points out:


>> 4. After releasing the dlc lock in rfcomm_dev_add(),
>> rfcomm_dev_state_change() will 'see' an incomplete rfcomm_dev if a
>> tty reference could not be obtained. Again, the best thing to do here
>> is nothing. Any future attempted open() will block on
>> rfcomm_dev_carrier_raised(). The unconnected device will exist until
>> released by ioctl(RFCOMMRELEASEDEV).
>> The patch removes the aforementioned code and uses the
>> tty_port_tty_hangup() helper to hangup the tty.

reads like the usage of that ioctl now necessary.

What currently happens is that when one kills rfcomm (and any other
terminal which might use that tty), the entry in /dev doesn't disappear.
That means the same call to refcomm with the same device (e.g.
[/dev/]rfcomm1 doesn't work.

My current solution is to just revert that commit.
I haven't tested if modifying (the userland utility) rfcomm (adding that
ioctl) will help, but that looks only like a longterm solution.


Alexander Holler

 \ /
  Last update: 2013-12-12 21:21    [W:0.070 / U:3.776 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site