From: Gustavo Padovan <gustavo@padovan.org>
To: Gianluca Anzolin <gianluca@sottospazio.it>
Cc: peter@hurleysoftware.com, marcel@holtmann.org,
linux-bluetooth@vger.kernel.org, gregkh@linuxfoundation.org,
jslaby@suse.cz
Subject: Re: [PATCH] rfcomm: don't release the port in rfcomm_dev_state_change()
Date: Thu, 19 Sep 2013 11:24:13 -0500 [thread overview]
Message-ID: <20130919162413.GG4006@joana> (raw)
In-Reply-To: <1377620926-23370-1-git-send-email-gianluca@sottospazio.it>
Hi Gianluca,
2013-08-27 Gianluca Anzolin <gianluca@sottospazio.it>:
> 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:
>
> 1. Only consider dlcs that are 'stolen' from a connected socket, ie.
> reused. Allocated dlcs cannot have been closed prior to port
> activate and so for these dlcs a tty reference will always be avail
> in rfcomm_dev_state_change() -- except for the conditions covered by
> #2b below.
> 2. If a tty was at some point previously created for this rfcomm, then
> either
> (a) the tty reference is still avail, so rfcomm_dev_state_change()
> will perform a hangup. So nothing to do, or,
> (b) the tty reference is no longer avail, and the tty_port will be
> destroyed by the last tty_port_put() in rfcomm_tty_cleanup.
> Again, no action required.
> 3. Prior to obtaining the dlc lock in rfcomm_dev_add(),
> rfcomm_dev_state_change() will not 'see' a rfcomm_dev so nothing to
> do here.
> 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.
>
> Signed-off-by: Gianluca Anzolin <gianluca@sottospazio.it>
> ---
> net/bluetooth/rfcomm/tty.c | 35 ++---------------------------------
> 1 file changed, 2 insertions(+), 33 deletions(-)
Patch has been applied to bluetooth.git. Thanks.
Gustavo
next prev parent reply other threads:[~2013-09-19 16:24 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-27 16:28 [PATCH] rfcomm: don't release the port in rfcomm_dev_state_change() Gianluca Anzolin
2013-09-18 1:19 ` Peter Hurley
2013-09-19 16:24 ` Gustavo Padovan [this message]
2013-12-12 20:11 ` [REGRESSION] rfcomm (userland) broken by commit 29cd718b Alexander Holler
2013-12-12 20:36 ` Peter Hurley
2013-12-12 23:35 ` Alexander Holler
2013-12-15 11:24 ` Gianluca Anzolin
2013-12-15 14:03 ` Peter Hurley
2013-12-15 15:08 ` Gianluca Anzolin
2013-12-15 17:54 ` Alexander Holler
2013-12-16 19:34 ` Peter Hurley
2013-12-16 20:20 ` Gianluca Anzolin
2013-12-16 20:27 ` Gianluca Anzolin
2013-12-16 20:58 ` Gianluca Anzolin
2013-12-16 21:15 ` Gianluca Anzolin
2013-12-24 13:21 ` Alexander Holler
2013-12-27 23:01 ` Benson Chow
2013-12-28 8:44 ` Gianluca Anzolin
2014-01-04 4:32 ` Benson Chow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130919162413.GG4006@joana \
--to=gustavo@padovan.org \
--cc=gianluca@sottospazio.it \
--cc=gregkh@linuxfoundation.org \
--cc=jslaby@suse.cz \
--cc=linux-bluetooth@vger.kernel.org \
--cc=marcel@holtmann.org \
--cc=peter@hurleysoftware.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.