From efd1f1242b7010adbad19ccee2e3d3c2786bf374 Mon Sep 17 00:00:00 2001 From: yuanhuihui Date: Wed, 13 Jul 2016 21:21:03 +0800 Subject: fixes mStartedUsers shoule be locked by mLock, not mVolumes when create/delete multiple user, plug/unplug externel storage(such as sdcard) at the same time. multiple threads run concurrency , the newly created user can not get state of externel storage. https://code.google.com/p/android/issues/detail?id=215901 Change-Id: I097f5291108af89a430e12045376065d71d48175 Signed-off-by: yuanhuihui --- services/core/java/com/android/server/MountService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java index cdd977be29ed..2cf93ab561c5 100644 --- a/services/core/java/com/android/server/MountService.java +++ b/services/core/java/com/android/server/MountService.java @@ -922,7 +922,7 @@ class MountService extends IMountService.Stub // Record user as started so newly mounted volumes kick off events // correctly, then synthesize events for any already-mounted volumes. - synchronized (mVolumes) { + synchronized (mLock) { for (int i = 0; i < mVolumes.size(); i++) { final VolumeInfo vol = mVolumes.valueAt(i); if (vol.isVisibleForRead(userId) && vol.isMountedReadable()) { @@ -945,7 +945,7 @@ class MountService extends IMountService.Stub } catch (NativeDaemonConnectorException ignored) { } - synchronized (mVolumes) { + synchronized (mLock) { mSystemUnlockedUsers = ArrayUtils.removeInt(mSystemUnlockedUsers, userId); } } -- cgit v1.2.3-59-g8ed1b