diff options
author | Johan Hovold <jhovold@gmail.com> | 2014-05-26 19:23:06 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-05-27 15:04:04 -0700 |
commit | 7d8825bed46a28688f97cc934ecb326cc4ce2d2e (patch) | |
tree | 62295525f4035cb43e963300986672c573fc7e7b /drivers/usb/serial/sierra.c | |
parent | 7c80782ebf803b71009f2a3d97f722d12fc20b05 (diff) | |
download | lwn-7d8825bed46a28688f97cc934ecb326cc4ce2d2e.tar.gz lwn-7d8825bed46a28688f97cc934ecb326cc4ce2d2e.zip |
USB: sierra: clean up suspend
Clean up suspend() somewhat and make sure to always set the suspended
flag (although it's only used for runtime PM) in order to match
resume().
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/serial/sierra.c')
-rw-r--r-- | drivers/usb/serial/sierra.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c index 4b6d0ff07ddd..1d42e8305b8e 100644 --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c @@ -964,22 +964,18 @@ static void stop_read_write_urbs(struct usb_serial *serial) static int sierra_suspend(struct usb_serial *serial, pm_message_t message) { - struct sierra_intf_private *intfdata; - int b; + struct sierra_intf_private *intfdata = usb_get_serial_data(serial); + spin_lock_irq(&intfdata->susp_lock); if (PMSG_IS_AUTO(message)) { - intfdata = usb_get_serial_data(serial); - spin_lock_irq(&intfdata->susp_lock); - b = intfdata->in_flight; - - if (b) { + if (intfdata->in_flight) { spin_unlock_irq(&intfdata->susp_lock); return -EBUSY; - } else { - intfdata->suspended = 1; - spin_unlock_irq(&intfdata->susp_lock); } } + intfdata->suspended = 1; + spin_unlock_irq(&intfdata->susp_lock); + stop_read_write_urbs(serial); return 0; |