From 2bca868361b41ff6a8228824cbecadc4c5deb44e Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 22 Aug 2012 13:59:58 -0700 Subject: [PATCH] Iteration on multi-user external storage. Remove single-user bind mounts, since they need to remain as raw mounts to correctly propagate when remounted. This means we're back to using sdcard_r GID to enforce READ_EXTERNAL_STORAGE. Bug: 6925012 Change-Id: I41b5d7ddc985a5df2e288632a0a80d4724089e00 --- core/java/android/os/Process.java | 4 +--- .../com/android/internal/os/ZygoteConnection.java | 2 -- .../android/server/am/ActivityManagerService.java | 13 ++++--------- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java index 3513bdccc6675..851b8df687c29 100644 --- a/core/java/android/os/Process.java +++ b/core/java/android/os/Process.java @@ -582,9 +582,7 @@ public class Process { if ((debugFlags & Zygote.DEBUG_ENABLE_ASSERT) != 0) { argsForZygote.add("--enable-assert"); } - if (mountExternal == Zygote.MOUNT_EXTERNAL_SINGLEUSER) { - argsForZygote.add("--mount-external-singleuser"); - } else if (mountExternal == Zygote.MOUNT_EXTERNAL_MULTIUSER) { + if (mountExternal == Zygote.MOUNT_EXTERNAL_MULTIUSER) { argsForZygote.add("--mount-external-multiuser"); } argsForZygote.add("--target-sdk-version=" + targetSdkVersion); diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java index 1e268c4d75275..d6f1807e3a71e 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java @@ -527,8 +527,6 @@ class ZygoteConnection { "Duplicate arg specified"); } niceName = arg.substring(arg.indexOf('=') + 1); - } else if (arg.equals("--mount-external-singleuser")) { - mountExternal = Zygote.MOUNT_EXTERNAL_SINGLEUSER; } else if (arg.equals("--mount-external-multiuser")) { mountExternal = Zygote.MOUNT_EXTERNAL_MULTIUSER; } else { diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 7f2b69fd5c29f..816dc89aef27c 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -1982,18 +1982,13 @@ public final class ActivityManagerService extends ActivityManagerNative try { final PackageManager pm = mContext.getPackageManager(); gids = pm.getPackageGids(app.info.packageName); - if (pm.checkPermission( - android.Manifest.permission.READ_EXTERNAL_STORAGE, app.info.packageName) - == PERMISSION_GRANTED) { - if (Environment.isExternalStorageEmulated()) { - mountExternal = Zygote.MOUNT_EXTERNAL_MULTIUSER; - } else { - mountExternal = Zygote.MOUNT_EXTERNAL_SINGLEUSER; - } - } } catch (PackageManager.NameNotFoundException e) { Slog.w(TAG, "Unable to retrieve gids", e); } + + if (Environment.isExternalStorageEmulated()) { + mountExternal = Zygote.MOUNT_EXTERNAL_MULTIUSER; + } } if (mFactoryTest != SystemServer.FACTORY_TEST_OFF) { if (mFactoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL