From: Jiri Slaby <jslaby@suse.cz>
To: jhovold@gmail.com
Cc: Peter Hurley <peter@hurleysoftware.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Alan Stern <stern@rowland.harvard.edu>,
USB list <linux-usb@vger.kernel.org>,
linux-serial@vger.kernel.org, Alan Cox <alan@lxorguk.ukuu.org.uk>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [Fwd: [PATCH v2 0/4] TTY: port hangup and close fixes]
Date: Tue, 05 Mar 2013 17:02:44 +0100 [thread overview]
Message-ID: <51361724.4050107@suse.cz> (raw)
In-Reply-To: <1362085054.3337.20.camel@thor.lan>
On 02/28/2013 09:57 PM, Peter Hurley wrote:
> Hi Jiri,
>
> Just wanted to make sure you saw this series.
Hi, thanks for letting me know. Johan, care to CC Alan Cox and me (or at
least LKML) when you're changing the TTY core next time?
I have a couple of questions for 2/4:
> Move HUPCL handling to port shutdown so that DTR is dropped also on
> hang up (tty_port_close is a noop for hung-up ports).
It makes sense, but I'm not sure -- is this expected, i.e. does this
conform to standards and/or BSDs?
> @@ -196,13 +196,20 @@ void tty_port_tty_set(struct tty_port *port, struct
> tty_struct *tty)
> }
> EXPORT_SYMBOL(tty_port_tty_set);
-static void tty_port_shutdown(struct tty_port *port)
+static void tty_port_shutdown(struct tty_port *port, struct tty_struct
*tty)
{
mutex_lock(&port->mutex);
if (port->console)
goto out;
if (test_and_clear_bit(ASYNCB_INITIALIZED, &port->flags)) {
+ /*
+ * Drop DTR/RTS if HUPCL is set. This causes any attached
+ * modem to hang up the line.
+ */
+ if (!tty || tty->termios.c_cflag & HUPCL)
> + tty_port_lower_dtr_rts(port);
> +
So you drop the line even thought the user didn't necessarily want to,
in case the tty is gone already?
> @@ -225,15 +232,13 @@ void tty_port_hangup(struct tty_port *port)
spin_lock_irqsave(&port->lock, flags);
port->count = 0;
port->flags &= ~ASYNC_NORMAL_ACTIVE;
- if (port->tty) {
+ if (port->tty)
set_bit(TTY_IO_ERROR, &port->tty->flags);
- tty_kref_put(port->tty);
- }
- port->tty = NULL;
spin_unlock_irqrestore(&port->lock, flags);
> + tty_port_shutdown(port, port->tty);
What prevents port->tty to be NULL here already?
> + tty_port_tty_set(port, NULL);
> wake_up_interruptible(&port->open_wait);
> wake_up_interruptible(&port->delta_msr_wait);
> - tty_port_shutdown(port);
Did you investigate if the order matters here? I don't know, just curious...
> @@ -452,11 +457,6 @@ int tty_port_close_start(struct tty_port *port,
/* Flush the ldisc buffering */
tty_ldisc_flush(tty);
- /* Drop DTR/RTS if HUPCL is set. This causes any attached modem to
- hang up the line */
- if (tty->termios.c_cflag & HUPCL)
- tty_port_lower_dtr_rts(port);
-
/* Don't call port->drop for the last reference. Callers will want
to drop the last active reference in ->shutdown() or the tty
> shutdown path */
> -------- Forwarded Message --------
> From: Johan Hovold <jhovold@gmail.com>
> To: Greg KH <gregkh@linuxfoundation.org>
> Cc: Alan Stern <stern@rowland.harvard.edu>, linux-usb@vger.kernel.org,
> linux-serial@vger.kernel.org, Peter Hurley <peter@hurleysoftware.com>,
> Johan Hovold <jhovold@gmail.com>
> Subject: [PATCH v2 0/4] TTY: port hangup and close fixes
> Date: Tue, 26 Feb 2013 12:14:28 +0100
>
> These patches against tty-next fix a few issues with tty-port hangup and
> close.
>
> The first and third patch are essentially clean ups.
>
> The second patch makes sure DTR is dropped also on hangup and that DTR
> is only dropped for initialised ports (where is could have been raised
> in the first place).
>
> The fourth and final patch, make sure no tty callbacks are made from
> tty_port_close_start when the port has not been initialised (successfully
> opened). This was previously only done for wait_until_sent but there's
> no reason to call flush_buffer or to honour port drain delay either.
> The latter could cause a failed open to stall for up to two seconds.
>
> As a side-effect, these patches also fix an issue in USB-serial where we could
> get tty-port callbacks on an uninitialised port after having hung up and
> unregistered a device after disconnect.
>
> Johan
>
>
> v2:
> - reuse tty reference from hangup and close in shutdown. Both call sites
> guarantee tty is either NULL or has a kref.
>
> Changes since RFC-series:
> - fix up the two driver relying on tty_port_close_start directly but
> that did not manage DTR themselves
>
>
> Johan Hovold (4):
> TTY: clean up port shutdown
> TTY: fix DTR not being dropped on hang up
> TTY: clean up port drain-delay handling
> TTY: fix close of uninitialised ports
>
> drivers/tty/mxser.c | 4 +++
> drivers/tty/n_gsm.c | 4 +++
> drivers/tty/tty_port.c | 72 +++++++++++++++++++++++++++++---------------------
> 3 files changed, 50 insertions(+), 30 deletions(-)
>
thanks,
--
js
suse labs
next parent reply other threads:[~2013-03-05 16:02 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1362085054.3337.20.camel@thor.lan>
2013-03-05 16:02 ` Jiri Slaby [this message]
2013-03-05 17:06 ` [Fwd: [PATCH v2 0/4] TTY: port hangup and close fixes] Peter Hurley
[not found] ` <1362503170.18799.33.camel-AsKIXgLx6sE@public.gmane.org>
2013-03-05 21:56 ` Jiri Slaby
2013-03-05 22:02 ` Peter Hurley
2013-03-05 22:10 ` Jiri Slaby
2013-03-05 22:32 ` Peter Hurley
2013-03-06 16:23 ` Jiri Slaby
2013-03-06 16:52 ` Johan Hovold
2013-03-06 19:14 ` Peter Hurley
[not found] ` <1362597296.18799.198.camel-AsKIXgLx6sE@public.gmane.org>
2013-03-07 9:43 ` Johan Hovold
2013-03-07 21:52 ` Peter Hurley
[not found] ` <51361724.4050107-AlSwsSmVLrQ@public.gmane.org>
2013-03-07 14:55 ` [PATCH v3 0/6] TTY: port hangup and close fixes Johan Hovold
[not found] ` <1362668153-10972-1-git-send-email-jhovold-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-03-07 14:55 ` [PATCH v3 1/6] TTY: clean up port shutdown Johan Hovold
2013-03-07 14:55 ` [PATCH v3 2/6] TTY: wake up processes last at hangup Johan Hovold
2013-03-07 14:55 ` [PATCH v3 3/6] TTY: fix DTR being raised on hang up Johan Hovold
2013-03-13 19:43 ` Peter Hurley
[not found] ` <1363203823.25976.102.camel-AsKIXgLx6sE@public.gmane.org>
2013-03-15 9:24 ` Johan Hovold
2013-03-15 11:03 ` Peter Hurley
2013-03-15 11:30 ` Johan Hovold
2013-03-15 11:57 ` Peter Hurley
2013-03-07 14:55 ` [PATCH v3 4/6] TTY: fix DTR not being dropped " Johan Hovold
2013-03-07 14:55 ` [PATCH v3 5/6] TTY: clean up port drain-delay handling Johan Hovold
2013-03-07 14:55 ` [PATCH v3 6/6] TTY: fix close of uninitialised ports Johan Hovold
2013-03-13 19:50 ` [PATCH v3 0/6] TTY: port hangup and close fixes Peter Hurley
2013-03-15 9:29 ` Johan Hovold
2013-03-15 19:05 ` Greg Kroah-Hartman
2013-03-15 19:42 ` Johan Hovold
2013-03-18 23:28 ` Greg Kroah-Hartman
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=51361724.4050107@suse.cz \
--to=jslaby@suse.cz \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=gregkh@linuxfoundation.org \
--cc=jhovold@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=peter@hurleysoftware.com \
--cc=stern@rowland.harvard.edu \
/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 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).