aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorOliver Neukum <oliver@neukum.org>2010-02-27 20:57:12 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2010-03-19 07:24:17 -0700
commit338124c1f18c2c737656ac58735f040d90b23d8c (patch)
treeb763f5a797062130e481ffe4adcf6c32fdd4feb5 /drivers/usb
parentusb: cdc-wdm: Fix order in disconnect and fix locking (diff)
downloadlinux-dev-338124c1f18c2c737656ac58735f040d90b23d8c.tar.xz
linux-dev-338124c1f18c2c737656ac58735f040d90b23d8c.zip
usb: cdc-wdm: Fix deadlock between write and resume
The new runtime PM scheme allows resume() to have no locks. This fixes the deadlock. Signed-off-by: Oliver Neukum <neukum@b1-systems.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/class/cdc-wdm.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
index b57490508860..189141ca4e05 100644
--- a/drivers/usb/class/cdc-wdm.c
+++ b/drivers/usb/class/cdc-wdm.c
@@ -839,10 +839,10 @@ static int wdm_resume(struct usb_interface *intf)
int rv;
dev_dbg(&desc->intf->dev, "wdm%d_resume\n", intf->minor);
- mutex_lock(&desc->lock);
+
clear_bit(WDM_SUSPENDING, &desc->flags);
rv = recover_from_urb_loss(desc);
- mutex_unlock(&desc->lock);
+
return rv;
}
#endif