mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-11 05:17:10 +09:00
USB: cdc-acm: fix runtime PM imbalance at shutdown
commit5292afa657upstream. Make sure only to decrement the PM counters if they were actually incremented. Note that the USB PM counter, but not necessarily the driver core PM counter, is reset when the interface is unbound. Fixes:11ea859d64("USB: additional power savings for cdc-acm devices that support remote wakeup") Signed-off-by: Johan Hovold <jhovold@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
9ff7cc901d
commit
d4c6a43a60
@@ -590,12 +590,13 @@ static void acm_port_shutdown(struct tty_port *port)
|
||||
struct urb *urb;
|
||||
struct acm_wb *wb;
|
||||
int i;
|
||||
int pm_err;
|
||||
|
||||
dev_dbg(&acm->control->dev, "%s\n", __func__);
|
||||
|
||||
mutex_lock(&acm->mutex);
|
||||
if (!acm->disconnected) {
|
||||
usb_autopm_get_interface(acm->control);
|
||||
pm_err = usb_autopm_get_interface(acm->control);
|
||||
acm_set_control(acm, acm->ctrlout = 0);
|
||||
|
||||
for (;;) {
|
||||
@@ -613,7 +614,8 @@ static void acm_port_shutdown(struct tty_port *port)
|
||||
for (i = 0; i < acm->rx_buflimit; i++)
|
||||
usb_kill_urb(acm->read_urbs[i]);
|
||||
acm->control->needs_remote_wakeup = 0;
|
||||
usb_autopm_put_interface(acm->control);
|
||||
if (!pm_err)
|
||||
usb_autopm_put_interface(acm->control);
|
||||
}
|
||||
mutex_unlock(&acm->mutex);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user