stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH stable-4.4] USB: serial: ch341: fix resume after reset
@ 2017-01-17 15:15 Johan Hovold
  2017-01-17 15:31 ` Greg Kroah-Hartman
  0 siblings, 1 reply; 2+ messages in thread
From: Johan Hovold @ 2017-01-17 15:15 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: Johan Hovold, stable

commit ce5e292828117d1b71cbd3edf9e9137cf31acd30 upstream.

Fix reset-resume handling which failed to resubmit the read and
interrupt URBs, thereby leaving a port that was open before suspend in a
broken state until closed and reopened.

Fixes: 1ded7ea47b88 ("USB: ch341 serial: fix port number changed after
resume")
Fixes: 2bfd1c96a9fb ("USB: serial: ch341: remove reset_resume callback")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
---

This is a backport of ce5e29282811 ("USB: serial: ch341: fix resume
after reset") to 4.4 stable.

Note that current version of this patch in the stable queue will fail to
compile as it depends on patch that went into 4.7.

This patch should replace the one currently in the 4.4 stable queue.

Johan


 drivers/usb/serial/ch341.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c
index 56e1d2ab5fa5..f20b856d4ab6 100644
--- a/drivers/usb/serial/ch341.c
+++ b/drivers/usb/serial/ch341.c
@@ -544,14 +544,23 @@ static int ch341_tiocmget(struct tty_struct *tty)
 
 static int ch341_reset_resume(struct usb_serial *serial)
 {
-	struct ch341_private *priv;
-
-	priv = usb_get_serial_port_data(serial->port[0]);
+	struct usb_serial_port *port = serial->port[0];
+	struct ch341_private *priv = usb_get_serial_port_data(port);
+	int ret;
 
 	/* reconfigure ch341 serial port after bus-reset */
 	ch341_configure(serial->dev, priv);
 
-	return 0;
+	if (test_bit(ASYNCB_INITIALIZED, &port->port.flags)) {
+		ret = usb_submit_urb(port->interrupt_in_urb, GFP_NOIO);
+		if (ret) {
+			dev_err(&port->dev, "failed to submit interrupt urb: %d\n",
+				ret);
+			return ret;
+		}
+	}
+
+	return usb_serial_generic_resume(serial);
 }
 
 static struct usb_serial_driver ch341_device = {
-- 
2.10.2


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

* Re: [PATCH stable-4.4] USB: serial: ch341: fix resume after reset
  2017-01-17 15:15 [PATCH stable-4.4] USB: serial: ch341: fix resume after reset Johan Hovold
@ 2017-01-17 15:31 ` Greg Kroah-Hartman
  0 siblings, 0 replies; 2+ messages in thread
From: Greg Kroah-Hartman @ 2017-01-17 15:31 UTC (permalink / raw)
  To: Johan Hovold; +Cc: stable

On Tue, Jan 17, 2017 at 04:15:42PM +0100, Johan Hovold wrote:
> commit ce5e292828117d1b71cbd3edf9e9137cf31acd30 upstream.
> 
> Fix reset-resume handling which failed to resubmit the read and
> interrupt URBs, thereby leaving a port that was open before suspend in a
> broken state until closed and reopened.
> 
> Fixes: 1ded7ea47b88 ("USB: ch341 serial: fix port number changed after
> resume")
> Fixes: 2bfd1c96a9fb ("USB: serial: ch341: remove reset_resume callback")
> Cc: stable <stable@vger.kernel.org>
> Signed-off-by: Johan Hovold <johan@kernel.org>
> ---
> 
> This is a backport of ce5e29282811 ("USB: serial: ch341: fix resume
> after reset") to 4.4 stable.
> 
> Note that current version of this patch in the stable queue will fail to
> compile as it depends on patch that went into 4.7.
> 
> This patch should replace the one currently in the 4.4 stable queue.

Thanks for this, now applied.

greg k-h

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

end of thread, other threads:[~2017-01-17 15:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-17 15:15 [PATCH stable-4.4] USB: serial: ch341: fix resume after reset Johan Hovold
2017-01-17 15:31 ` Greg Kroah-Hartman

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).