greybus: loopback: Relax locking during loopback operations

Currently a per-connection mutex is held during calls to
gb_operation_send_sync. It is not necessary to hold this lock and later
patches supporting multiple-outstanding bi-directional operations need to
take the per-connection lock and the gb_dev level lock. Since gb_dev must
always be taken before per-connection locks, it is both desirable and safe
to drop the lock now.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
diff --git a/drivers/staging/greybus/loopback.c b/drivers/staging/greybus/loopback.c
index ef16ca5..e0be130 100644
--- a/drivers/staging/greybus/loopback.c
+++ b/drivers/staging/greybus/loopback.c
@@ -774,6 +774,8 @@
 			mutex_unlock(&gb->mutex);
 			goto sleep;
 		}
+		mutex_unlock(&gb->mutex);
+
 		/* Else operations to perform */
 		gb->apbridge_latency_ts = 0;
 		gb->gpbridge_latency_ts = 0;
@@ -783,7 +785,6 @@
 			error = gb_loopback_transfer(gb, size);
 		else if (type == GB_LOOPBACK_TYPE_SINK)
 			error = gb_loopback_sink(gb, size);
-		mutex_unlock(&gb->mutex);
 
 		mutex_lock(&gb_dev.mutex);
 		mutex_lock(&gb->mutex);