diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 6bac90532645b..1f17f8b87a317 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -1476,20 +1476,15 @@ public class UserManagerService extends IUserManager.Stub { @Override public void revokeUserAdmin(@UserIdInt int userId) { checkManageUserAndAcrossUsersFullPermission("revoke admin privileges"); - synchronized (mPackagesLock) { - UserInfo info; synchronized (mUsersLock) { - info = getUserInfoLU(userId); - } - if (info == null || !info.isAdmin()) { - // Exit if no user found with that id, or the user is not an Admin. - return; - } - - info.flags ^= UserInfo.FLAG_ADMIN; - synchronized (mUsersLock) { - writeUserLP(getUserDataLU(info.id)); + UserData user = getUserDataLU(userId); + if (user == null || !user.info.isAdmin()) { + // Exit if no user found with that id, or the user is not an Admin. + return; + } + user.info.flags ^= UserInfo.FLAG_ADMIN; + writeUserLP(user); } } }