Patch "USB: serial: ch341: fix resume after reset" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
USB: serial: ch341: fix resume after reset
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
usb-serial-ch341-fix-resume-after-reset.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
ce5e292828117d1b71cbd3edf9e9137cf31acd30Mon Sep 17 00:00:00 2001
From: Johan Hovold <[email protected]>
Date: Fri, 6 Jan 2017 19:15:14 +0100
Subject: USB: serial: ch341: fix resume after reset
From: Johan Hovold <[email protected]>
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.
--- drivers/usb/serial/ch341.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)
drivers/usb/serial/ch341.c +13 -4
@@ -538,14 +538,23 @@ static int ch341_tiocmget(struct tty_strstatic 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 (tty_port_initialized (&port->port)) { + 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 = {
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/usb-serial-ch341-fix-control-message-error-handling.patch queue-4.4/usb-serial-ch341-fix-open-and-resume-after-b0.patch queue-4.4/usb-serial-ch341-fix-open-error-handling.patch queue-4.4/usb-serial-ch341-fix-initial-modem-control-state.patch queue-4.4/usb-serial-kl5kusb105-fix-line-state-error-handling.patch queue-4.4/usb-serial-ch341-fix-resume-after-reset.patch
Johan Hovold
maintainerQuoted 46 lines · Greg Kroah-Hartman
This is a note to let you know that I've just added the patch titled
USB: serial: ch341: fix resume after reset
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summaryThe filename of the patch is:
usb-serial-ch341-fix-resume-after-reset.patch
and it can be found in the queue-4.4 subdirectory.If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
From
ce5e292828117d1b71cbd3edf9e9137cf31acd30Mon Sep 17 00:00:00 2001
From: Johan Hovold <[email protected]>
Date: Fri, 6 Jan 2017 19:15:14 +0100
Subject: USB: serial: ch341: fix resume after resetFrom: Johan Hovold <[email protected]>
commit
ce5e292828117d1b71cbd3edf9e9137cf31acd30upstream.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")Signed-off-by Johan Hovold <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- drivers/usb/serial/ch341.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)drivers/usb/serial/ch341.c +0
-2@@ -538,14 +538,23 @@ static int ch341_tiocmget(struct tty_strstatic int ch341_reset_resume (struct usb_serial *serial) { -struct ch341_private *priv; -
drivers/usb/serial/ch341.c static int ch341_tiocmget(struct tty_str · line 548
Quoted 10 lines
drivers/usb/serial/ch341.c +4
-2- 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 (tty_port_initialized (&port->port)) {
Note that this needs to be
if (test_bit(ASYNCB_INITIALIZED, &port->port.flags))
prior to commit d41861ca19c9 ("tty: Replace ASYNC_INITIALIZED bit and update atomically") that went into 4.7.
I'll send a backport.
Johan
Greg KH
maintainerQuoted 60 lines · Johan Hovold
Quoted 46 lines · Greg Kroah-Hartman
This is a note to let you know that I've just added the patch titled
USB: serial: ch341: fix resume after reset
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summaryThe filename of the patch is:
usb-serial-ch341-fix-resume-after-reset.patch
and it can be found in the queue-4.4 subdirectory.If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
From
ce5e292828117d1b71cbd3edf9e9137cf31acd30Mon Sep 17 00:00:00 2001
From: Johan Hovold <[email protected]>
Date: Fri, 6 Jan 2017 19:15:14 +0100
Subject: USB: serial: ch341: fix resume after resetFrom: Johan Hovold <[email protected]>
commit
ce5e292828117d1b71cbd3edf9e9137cf31acd30upstream.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")Signed-off-by Johan Hovold <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- drivers/usb/serial/ch341.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)drivers/usb/serial/ch341.c +0
-2@@ -538,14 +538,23 @@ static int ch341_tiocmget(struct tty_strstatic int ch341_reset_resume (struct usb_serial *serial) { -struct ch341_private *priv; -drivers/usb/serial/ch341.c static int ch341_tiocmget(struct tty_str · line 548
Quoted 10 lines
drivers/usb/serial/ch341.c +4
-2- 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 (tty_port_initialized (&port->port)) {Note that this needs to be
Quoted 6 lines
if (test_bit(ASYNCB_INITIALIZED, &port->port.flags))prior to commit
d41861ca19c9("tty: ReplaceASYNC_INITIALIZEDbit and update atomically") that went into 4.7.I'll send a backport.
Many thanks, my build system just hit this error. I'll drop this patch for now.
greg k-h