summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Anna Bauza <annabauza@google.com> 2024-04-24 14:47:24 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2024-04-24 14:47:24 +0000
commit9f425078706054d88e7e6dcda02a63f10b4253e7 (patch)
tree217fd0354dad92a340a4b9e444660d30a37e7bb3
parent489002ec4d7e0408ba886732f4e8faa1a63ec269 (diff)
parent952b686e56c3cbacf807cdbec6d974d5b0766814 (diff)
Merge "UserManagerService:getUserDataLU method should called by mUsersLock lock." into main
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java31
1 files changed, 16 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 0e873963c55f..06e9daba63ea 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -1677,26 +1677,27 @@ public class UserManagerService extends IUserManager.Stub {
public void setUserAdmin(@UserIdInt int userId) {
checkManageUserAndAcrossUsersFullPermission("set user admin");
mUserJourneyLogger.logUserJourneyBegin(userId, USER_JOURNEY_GRANT_ADMIN);
- UserInfo info;
+ UserData user;
synchronized (mPackagesLock) {
synchronized (mUsersLock) {
- info = getUserInfoLU(userId);
- }
- if (info == null) {
- // Exit if no user found with that id,
- mUserJourneyLogger.logNullUserJourneyError(USER_JOURNEY_GRANT_ADMIN,
+ user = getUserDataLU(userId);
+ if (user == null) {
+ // Exit if no user found with that id,
+ mUserJourneyLogger.logNullUserJourneyError(USER_JOURNEY_GRANT_ADMIN,
getCurrentUserId(), userId, /* userType */ "", /* userFlags */ -1);
- return;
- } else if (info.isAdmin()) {
- // Exit if the user is already an Admin.
- mUserJourneyLogger.logUserJourneyFinishWithError(getCurrentUserId(), info,
- USER_JOURNEY_GRANT_ADMIN, ERROR_CODE_USER_ALREADY_AN_ADMIN);
- return;
+ return;
+ } else if (user.info.isAdmin()) {
+ // Exit if the user is already an Admin.
+ mUserJourneyLogger.logUserJourneyFinishWithError(getCurrentUserId(),
+ user.info, USER_JOURNEY_GRANT_ADMIN,
+ ERROR_CODE_USER_ALREADY_AN_ADMIN);
+ return;
+ }
+ user.info.flags ^= UserInfo.FLAG_ADMIN;
+ writeUserLP(user);
}
- info.flags ^= UserInfo.FLAG_ADMIN;
- writeUserLP(getUserDataLU(info.id));
}
- mUserJourneyLogger.logUserJourneyFinishWithError(getCurrentUserId(), info,
+ mUserJourneyLogger.logUserJourneyFinishWithError(getCurrentUserId(), user.info,
USER_JOURNEY_GRANT_ADMIN, ERROR_CODE_UNSPECIFIED);
}