diff options
Diffstat (limited to 'drivers/usb/class/cdc-acm.c')
-rw-r--r-- | drivers/usb/class/cdc-acm.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 904efb6035b0..3bd4226c13dc 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c | |||
@@ -1514,18 +1514,15 @@ static int acm_suspend(struct usb_interface *intf, pm_message_t message) | |||
1514 | struct acm *acm = usb_get_intfdata(intf); | 1514 | struct acm *acm = usb_get_intfdata(intf); |
1515 | int cnt; | 1515 | int cnt; |
1516 | 1516 | ||
1517 | spin_lock_irq(&acm->read_lock); | ||
1518 | spin_lock(&acm->write_lock); | ||
1517 | if (PMSG_IS_AUTO(message)) { | 1519 | if (PMSG_IS_AUTO(message)) { |
1518 | int b; | 1520 | if (acm->transmitting) { |
1519 | 1521 | spin_unlock(&acm->write_lock); | |
1520 | spin_lock_irq(&acm->write_lock); | 1522 | spin_unlock_irq(&acm->read_lock); |
1521 | b = acm->transmitting; | ||
1522 | spin_unlock_irq(&acm->write_lock); | ||
1523 | if (b) | ||
1524 | return -EBUSY; | 1523 | return -EBUSY; |
1524 | } | ||
1525 | } | 1525 | } |
1526 | |||
1527 | spin_lock_irq(&acm->read_lock); | ||
1528 | spin_lock(&acm->write_lock); | ||
1529 | cnt = acm->susp_count++; | 1526 | cnt = acm->susp_count++; |
1530 | spin_unlock(&acm->write_lock); | 1527 | spin_unlock(&acm->write_lock); |
1531 | spin_unlock_irq(&acm->read_lock); | 1528 | spin_unlock_irq(&acm->read_lock); |