From fbc7717851f2681d15fedd684ab530d7a4fc842e Mon Sep 17 00:00:00 2001 From: Alex Chau Date: Thu, 18 Jan 2018 18:43:35 +0000 Subject: [PATCH] Add back missing synchronized in stopGuestOrEphemeralUserIfBackground - mStartedUsers and mCurrentUserId should be locked by mLock Bug: 72133858 Test: Manually create secondary user, and exit the user in SetupWizard Change-Id: If59749c06c5d8174462a6f2a255517c60321d9f4 --- .../java/com/android/server/am/UserController.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 65bebc6c235af..1a47aa5cd7773 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -795,11 +795,13 @@ class UserController implements Handler.Callback { */ private void stopGuestOrEphemeralUserIfBackground(int oldUserId) { if (DEBUG_MU) Slog.i(TAG, "Stop guest or ephemeral user if background: " + oldUserId); - UserState oldUss = mStartedUsers.get(oldUserId); - if (oldUserId == UserHandle.USER_SYSTEM || oldUserId == mCurrentUserId || oldUss == null - || oldUss.state == UserState.STATE_STOPPING - || oldUss.state == UserState.STATE_SHUTDOWN) { - return; + synchronized(mLock) { + UserState oldUss = mStartedUsers.get(oldUserId); + if (oldUserId == UserHandle.USER_SYSTEM || oldUserId == mCurrentUserId || oldUss == null + || oldUss.state == UserState.STATE_STOPPING + || oldUss.state == UserState.STATE_SHUTDOWN) { + return; + } } UserInfo userInfo = getUserInfo(oldUserId);