diff options
| author | 2024-04-24 14:47:24 +0000 | |
|---|---|---|
| committer | 2024-04-24 14:47:24 +0000 | |
| commit | 9f425078706054d88e7e6dcda02a63f10b4253e7 (patch) | |
| tree | 217fd0354dad92a340a4b9e444660d30a37e7bb3 | |
| parent | 489002ec4d7e0408ba886732f4e8faa1a63ec269 (diff) | |
| parent | 952b686e56c3cbacf807cdbec6d974d5b0766814 (diff) | |
Merge "UserManagerServiceļ¼getUserDataLU method should called by mUsersLock lock." into main
| -rw-r--r-- | services/core/java/com/android/server/pm/UserManagerService.java | 31 |
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); } |