Fix deadlock

Bug: 15591052
Change-Id: I76154e1640646d2ae8fae65e163e1f3ed1be17dc
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index d6333be..d22212b 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -5137,7 +5137,7 @@
             sleepUs = kRecordThreadSleepUs;
         }
         if (framesRead <= 0) {
-            continue;
+            goto unlock;
         }
         ALOG_ASSERT(framesRead > 0);
 
@@ -5145,10 +5145,12 @@
             (void) mTeeSink->write(&mRsmpInBuffer[rear * mChannelCount], framesRead);
         }
         // If destination is non-contiguous, we now correct for reading past end of buffer.
-        size_t part1 = mRsmpInFramesP2 - rear;
-        if ((size_t) framesRead > part1) {
-            memcpy(mRsmpInBuffer, &mRsmpInBuffer[mRsmpInFramesP2 * mChannelCount],
-                    (framesRead - part1) * mFrameSize);
+        {
+            size_t part1 = mRsmpInFramesP2 - rear;
+            if ((size_t) framesRead > part1) {
+                memcpy(mRsmpInBuffer, &mRsmpInBuffer[mRsmpInFramesP2 * mChannelCount],
+                        (framesRead - part1) * mFrameSize);
+            }
         }
         rear = mRsmpInRear += framesRead;
 
@@ -5356,6 +5358,7 @@
 
         }
 
+unlock:
         // enable changes in effect chain
         unlockEffectChains(effectChains);
         // effectChains doesn't need to be cleared, since it is cleared by destructor at scope end