Merge "Call unlockUserKey in a synchronized section" into nyc-dev

This commit is contained in:
Fyodor Kupolov
2016-05-04 23:10:41 +00:00
committed by Android (Google) Code Review

View File

@@ -927,19 +927,18 @@ final class UserController {
boolean unlockUserCleared(final int userId, byte[] token, byte[] secret, boolean unlockUserCleared(final int userId, byte[] token, byte[] secret,
IProgressListener listener) { IProgressListener listener) {
final UserState uss;
synchronized (mService) { synchronized (mService) {
// Bail if user isn't actually running, otherwise register the given // Bail if user isn't actually running, otherwise register the given
// listener to watch for unlock progress // listener to watch for unlock progress
uss = mStartedUsers.get(userId); final UserState uss = mStartedUsers.get(userId);
if (uss == null) { if (uss == null) {
notifyFinished(userId, listener); notifyFinished(userId, listener);
return false; return false;
} else { } else {
uss.mUnlockProgress.addListener(listener); uss.mUnlockProgress.addListener(listener);
} }
}
// TODO Move this block outside of synchronized if it causes lock contention
if (!StorageManager.isUserKeyUnlocked(userId)) { if (!StorageManager.isUserKeyUnlocked(userId)) {
final UserInfo userInfo = getUserInfo(userId); final UserInfo userInfo = getUserInfo(userId);
final IMountService mountService = getMountService(); final IMountService mountService = getMountService();
@@ -952,7 +951,6 @@ final class UserController {
} }
} }
synchronized (mService) {
finishUserUnlocking(uss); finishUserUnlocking(uss);
// We just unlocked a user, so let's now attempt to unlock any // We just unlocked a user, so let's now attempt to unlock any