|
@@ -668,7 +668,13 @@ static int acm_tty_write(struct tty_struct *tty,
|
|
memcpy(wb->buf, buf, count);
|
|
memcpy(wb->buf, buf, count);
|
|
wb->len = count;
|
|
wb->len = count;
|
|
|
|
|
|
- usb_autopm_get_interface_async(acm->control);
|
|
|
|
|
|
+ stat = usb_autopm_get_interface_async(acm->control);
|
|
|
|
+ if (stat) {
|
|
|
|
+ wb->use = 0;
|
|
|
|
+ spin_unlock_irqrestore(&acm->write_lock, flags);
|
|
|
|
+ return stat;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (acm->susp_count) {
|
|
if (acm->susp_count) {
|
|
usb_anchor_urb(wb->urb, &acm->delayed);
|
|
usb_anchor_urb(wb->urb, &acm->delayed);
|
|
spin_unlock_irqrestore(&acm->write_lock, flags);
|
|
spin_unlock_irqrestore(&acm->write_lock, flags);
|