diff options
author | Oliver Neukum <oliver@neukum.org> | 2010-02-27 20:57:12 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-03-19 07:24:17 -0700 |
commit | 338124c1f18c2c737656ac58735f040d90b23d8c (patch) | |
tree | b763f5a797062130e481ffe4adcf6c32fdd4feb5 | |
parent | d93d16e9aa58887feadd999ea26b7b8139e98b56 (diff) | |
download | lwn-338124c1f18c2c737656ac58735f040d90b23d8c.tar.gz lwn-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>
-rw-r--r-- | drivers/usb/class/cdc-wdm.c | 4 |
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 |