USB: cdc-acm: fix deadlock in acm_tty_open

The mutex must be dropped before calling usb_autopm_interface_put,
else a concurrent call to acm_suspend will trigger a deadlock.

BUG=chrome-os-partner:3143
TEST=run power_Resume test in tight loops on Alex.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>

Review URL: http://codereview.chromium.org/6824041

Change-Id: I35633cfd0aad8f9b3d72c83aefb25e2ed46e1a08
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index fc74de7..a98e38893 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -587,8 +587,6 @@
 	    (acm->ctrl_caps & USB_CDC_CAP_LINE))
 		goto full_bailout;
 
-	usb_autopm_put_interface(acm->control);
-
 	INIT_LIST_HEAD(&acm->spare_read_urbs);
 	INIT_LIST_HEAD(&acm->spare_read_bufs);
 	INIT_LIST_HEAD(&acm->filled_read_bufs);
@@ -605,6 +603,7 @@
 	tasklet_schedule(&acm->urb_task);
 
 	mutex_unlock(&acm->mutex);
+	usb_autopm_put_interface(acm->control);
 out:
 	mutex_unlock(&open_mutex);
 	return rv;