USB-Serial: Fix error handling of usb_wwan
Subsystems (2)
PATCH 1/1 USB-Serial: Fix error handling of usb_wwan
This fixes an issue where the bulk-in urb used for incoming data transfer is not resubmitted if the packet recieved contains an error status. This results in the driver locking until the port is closed and re-opened.
Tested on a custom board with a Cinterion GSM module.
Signed-off-by Matt Burtch <[email protected]>
--- drivers/usb/serial/usb_wwan.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/usb/serial/usb_wwan.c +10 -10
@@ -291,18 +291,18 @@ static void usb_wwan_indat_callback(struct urb *urb)tty_flip_buffer_push (&port->port); }else dev_dbg (dev,"%s: empty read urb received\n" , __func__); - -/* Resubmit urb so we continue receiving */ - err =usb_submit_urb (urb,GFP_ATOMIC ); -if (err) { -if (err != -EPERM ) { -dev_err (dev,"%s: resubmit read urb failed. (%d)\n" , __func__, err); -/* busy also in error unless we are killed */ -usb_mark_last_busy (port->serial->dev); - } - }else { + } +/* Resubmit urb so we continue receiving */ + err =usb_submit_urb (urb,GFP_ATOMIC ); +if (err) { +if (err != -EPERM ) { +dev_err (dev,"%s: resubmit read urb failed. (%d)\n" , + __func__, err); +/* busy also in error unless we are killed */ usb_mark_last_busy (port->serial->dev); } + }else { +usb_mark_last_busy (port->serial->dev); } }
Signature · 1 line
1.7.9.5
Greg Kroah-Hartman
maintainerQuoted 7 lines · Matt Burtch
This fixes an issue where the bulk-in urb used for incoming data transfer is not resubmitted if the packet recieved contains an error status. This results in the driver locking until the port is closed and re-opened.
Tested on a custom board with a Cinterion GSM module.
Signed-off-by Matt Burtch <[email protected]>
Ah, nice catch, thanks for this, I'll also mark it for the stable tree as it's something that those kernels would want to pick up.
greg k-h