USB: sierra: do not resume I/O on closed ports

Do not resume any I/O, including the delayed write queue, on closed
ports.

Note that this currently has no functional impact due to the
usb_autopm_get_interface() in close(), but that call is about to be
removed by a follow-up patch.

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Johan Hovold 2014-05-26 19:23:03 +02:00 committed by Greg Kroah-Hartman
parent 40d88983ce
commit a283d080a4
1 changed files with 4 additions and 6 deletions

View File

@ -1013,7 +1013,7 @@ static int sierra_resume(struct usb_serial *serial)
port = serial->port[i];
portdata = usb_get_serial_port_data(port);
if (!portdata)
if (!portdata || !portdata->opened)
continue;
while ((urb = usb_get_from_anchor(&portdata->delayed))) {
@ -1036,11 +1036,9 @@ static int sierra_resume(struct usb_serial *serial)
}
}
if (portdata->opened) {
err = sierra_submit_rx_urbs(port, GFP_ATOMIC);
if (err)
ec++;
}
err = sierra_submit_rx_urbs(port, GFP_ATOMIC);
if (err)
ec++;
}
intfdata->suspended = 0;
spin_unlock_irq(&intfdata->susp_lock);