From b53ff45a2fd064228496eae2bc608c0d32f4089e Mon Sep 17 00:00:00 2001 From: Jing Ji Date: Thu, 8 Apr 2021 10:26:58 -0700 Subject: [PATCH] Acquire proc lock prior to the call into AM service connection holder Since that holder could grab the WM lock and call back into AMS. Bug: 182885705 Test: atest CtsAppTestCases:ServiceTest Change-Id: I41c477595caf4a43d8efad91343fe57bbb981a70 --- .../com/android/server/am/ActivityManagerService.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 7dc39b34c88af..69fe5fe6121ac 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -15647,9 +15647,11 @@ public class ActivityManagerService extends IActivityManager.Stub final ActivityServiceConnectionsHolder holder = (ActivityServiceConnectionsHolder) connectionHolder; synchronized (ActivityManagerService.this) { - holder.forEachConnection(cr -> mServices.removeConnectionLocked( - (ConnectionRecord) cr, null /* skipApp */, holder /* skipAct */, - false /* enqueueOomAdj */)); + synchronized (mProcLock) { + holder.forEachConnection(cr -> mServices.removeConnectionLocked( + (ConnectionRecord) cr, null /* skipApp */, holder /* skipAct */, + false /* enqueueOomAdj */)); + } } }