OSDN Git Service

Add back missing synchronized in stopGuestOrEphemeralUserIfBackground
authorAlex Chau <alexchau@google.com>
Thu, 18 Jan 2018 18:43:35 +0000 (18:43 +0000)
committerAlex Chau <alexchau@google.com>
Thu, 18 Jan 2018 18:51:23 +0000 (18:51 +0000)
- mStartedUsers and mCurrentUserId should be locked by mLock

Bug: 72133858
Test: Manually create secondary user, and exit the user in SetupWizard
Change-Id: If59749c06c5d8174462a6f2a255517c60321d9f4

services/core/java/com/android/server/am/UserController.java

index 65bebc6..1a47aa5 100644 (file)
@@ -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);