OSDN Git Service

Fix boot loop when upgrading direclty from L to N
authorRubin Xu <rubinxu@google.com>
Fri, 25 Nov 2016 18:20:48 +0000 (18:20 +0000)
committerandroid-build-merger <android-build-merger@google.com>
Fri, 25 Nov 2016 18:20:48 +0000 (18:20 +0000)
am: bfc7faaf35

Change-Id: Iaaf32f1c6fd70dd394252f963d87897899fb2e55

services/core/java/com/android/server/LockSettingsService.java

index ae5ed6b..203d247 100644 (file)
@@ -240,6 +240,17 @@ public class LockSettingsService extends ILockSettings.Stub {
             if (DEBUG) Slog.v(TAG, "Parent does not have a screen lock");
             return;
         }
+        // Do not tie when the parent has no SID (but does have a screen lock).
+        // This can only happen during an upgrade path where SID is yet to be
+        // generated when the user unlocks for the first time.
+        try {
+            if (getGateKeeperService().getSecureUserId(parentId) == 0) {
+                return;
+            }
+        } catch (RemoteException e) {
+            Slog.e(TAG, "Failed to talk to GateKeeper service", e);
+            return;
+        }
         if (DEBUG) Slog.v(TAG, "Tie managed profile to parent now!");
         byte[] randomLockSeed = new byte[] {};
         try {