forked from Minki/linux
usb_wwan: fix error case in close()
The device never needs to be resumed in close(). But the counters must be balanced. As resumption can fail, but the counters must be balanced, use the _no_resume() version which cannot fail. Signed-off-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
16871dcac7
commit
9a91aedca2
@ -424,6 +424,7 @@ int usb_wwan_open(struct tty_struct *tty, struct usb_serial_port *port)
|
|||||||
spin_lock_irq(&intfdata->susp_lock);
|
spin_lock_irq(&intfdata->susp_lock);
|
||||||
portdata->opened = 1;
|
portdata->opened = 1;
|
||||||
spin_unlock_irq(&intfdata->susp_lock);
|
spin_unlock_irq(&intfdata->susp_lock);
|
||||||
|
/* this balances a get in the generic USB serial code */
|
||||||
usb_autopm_put_interface(serial->interface);
|
usb_autopm_put_interface(serial->interface);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -450,7 +451,8 @@ void usb_wwan_close(struct usb_serial_port *port)
|
|||||||
usb_kill_urb(portdata->in_urbs[i]);
|
usb_kill_urb(portdata->in_urbs[i]);
|
||||||
for (i = 0; i < N_OUT_URB; i++)
|
for (i = 0; i < N_OUT_URB; i++)
|
||||||
usb_kill_urb(portdata->out_urbs[i]);
|
usb_kill_urb(portdata->out_urbs[i]);
|
||||||
usb_autopm_get_interface(serial->interface);
|
/* balancing - important as an error cannot be handled*/
|
||||||
|
usb_autopm_get_interface_no_resume(serial->interface);
|
||||||
serial->interface->needs_remote_wakeup = 0;
|
serial->interface->needs_remote_wakeup = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user