diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 1b75e79667c1c..0c65fd58f524d 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -291,6 +291,7 @@ public class UserManagerService extends IUserManager.Stub { private final Handler mHandler; private final File mUsersDir; + @GuardedBy("mPackagesLock") private final File mUserListFile; private static final IBinder mUserRestriconToken = new Binder(); @@ -3025,7 +3026,7 @@ public class UserManagerService extends IUserManager.Stub { mUpdatingSystemUserMode = true; } - @GuardedBy({"mRestrictionsLock", "mPackagesLock"}) + @GuardedBy({"mPackagesLock"}) private void readUserListLP() { if (!mUserListFile.exists()) { fallbackToSingleUserLP(); @@ -3093,8 +3094,10 @@ public class UserManagerService extends IUserManager.Stub { } else if (name.equals(TAG_DEVICE_OWNER_USER_ID) // Legacy name, should only be encountered when upgrading from pre-O. || name.equals(TAG_GLOBAL_RESTRICTION_OWNER_ID)) { - mDeviceOwnerUserId = - parser.getAttributeInt(null, ATTR_ID, mDeviceOwnerUserId); + synchronized (mRestrictionsLock) { + mDeviceOwnerUserId = + parser.getAttributeInt(null, ATTR_ID, mDeviceOwnerUserId); + } } else if (name.equals(TAG_DEVICE_POLICY_RESTRICTIONS)) { // Should only happen when upgrading from pre-O (version < 7). oldDevicePolicyGlobalUserRestrictions = @@ -3116,7 +3119,7 @@ public class UserManagerService extends IUserManager.Stub { * Upgrade steps between versions, either for fixing bugs or changing the data format. * @param oldGlobalUserRestrictions Pre-O global device policy restrictions. */ - @GuardedBy({"mRestrictionsLock", "mPackagesLock"}) + @GuardedBy({"mPackagesLock"}) private void upgradeIfNecessaryLP(Bundle oldGlobalUserRestrictions) { upgradeIfNecessaryLP(oldGlobalUserRestrictions, mUserVersion, mUserTypeVersion); } @@ -3125,7 +3128,7 @@ public class UserManagerService extends IUserManager.Stub { * Version of {@link #upgradeIfNecessaryLP(Bundle)} that takes in the userVersion for testing * purposes. For non-tests, use {@link #upgradeIfNecessaryLP(Bundle)}. */ - @GuardedBy({"mRestrictionsLock", "mPackagesLock"}) + @GuardedBy({"mPackagesLock"}) @VisibleForTesting void upgradeIfNecessaryLP(Bundle oldGlobalUserRestrictions, int userVersion, int userTypeVersion) { @@ -3386,7 +3389,7 @@ public class UserManagerService extends IUserManager.Stub { userInfo.profileBadge = getFreeProfileBadgeLU(userInfo.profileGroupId, userInfo.userType); } - @GuardedBy({"mPackagesLock", "mRestrictionsLock"}) + @GuardedBy({"mPackagesLock"}) private void fallbackToSingleUserLP() { int flags = UserInfo.FLAG_SYSTEM | UserInfo.FLAG_INITIALIZED | UserInfo.FLAG_ADMIN | UserInfo.FLAG_PRIMARY; @@ -3594,7 +3597,7 @@ public class UserManagerService extends IUserManager.Stub { * * */ - @GuardedBy({"mRestrictionsLock", "mPackagesLock"}) + @GuardedBy({"mPackagesLock"}) private void writeUserListLP() { if (DBG) { debug("writeUserList"); @@ -3619,7 +3622,9 @@ public class UserManagerService extends IUserManager.Stub { } serializer.endTag(null, TAG_GUEST_RESTRICTIONS); serializer.startTag(null, TAG_DEVICE_OWNER_USER_ID); - serializer.attributeInt(null, ATTR_ID, mDeviceOwnerUserId); + synchronized (mRestrictionsLock) { + serializer.attributeInt(null, ATTR_ID, mDeviceOwnerUserId); + } serializer.endTag(null, TAG_DEVICE_OWNER_USER_ID); int[] userIdsToWrite; synchronized (mUsersLock) { @@ -5950,7 +5955,9 @@ public class UserManagerService extends IUserManager.Stub { pw.println(); pw.println("Device properties:"); - pw.println(" Device owner id:" + mDeviceOwnerUserId); + synchronized (mRestrictionsLock) { + pw.println(" Device owner id:" + mDeviceOwnerUserId); + } pw.println(); pw.println(" Guest restrictions:"); synchronized (mGuestRestrictions) {