Merge "Revert "Revert "Do not mount whitelisted package in storage data and obb dirs""" into rvc-dev am: afef06a0f6 am: 216018145e am: 453e2b4177 am: 7501351e3e
Change-Id: Iff6bbcba909c6b489a0524ab1f3d86dd3ddd3aab
This commit is contained in:
@@ -607,6 +607,9 @@ public class Process {
|
||||
* started.
|
||||
* @param pkgDataInfoMap Map from related package names to private data directory
|
||||
* volume UUID and inode number.
|
||||
* @param whitelistedDataInfoMap Map from whitelisted package names to private data directory
|
||||
* volume UUID and inode number.
|
||||
* @param bindMountAppsData whether zygote needs to mount CE and DE data.
|
||||
* @param bindMountAppStorageDirs whether zygote needs to mount Android/obb and Android/data.
|
||||
* @param zygoteArgs Additional arguments to supply to the zygote process.
|
||||
* @return An object that describes the result of the attempt to start the process.
|
||||
@@ -631,13 +634,17 @@ public class Process {
|
||||
@Nullable long[] disabledCompatChanges,
|
||||
@Nullable Map<String, Pair<String, Long>>
|
||||
pkgDataInfoMap,
|
||||
@Nullable Map<String, Pair<String, Long>>
|
||||
whitelistedDataInfoMap,
|
||||
boolean bindMountAppsData,
|
||||
boolean bindMountAppStorageDirs,
|
||||
@Nullable String[] zygoteArgs) {
|
||||
return ZYGOTE_PROCESS.start(processClass, niceName, uid, gid, gids,
|
||||
runtimeFlags, mountExternal, targetSdkVersion, seInfo,
|
||||
abi, instructionSet, appDataDir, invokeWith, packageName,
|
||||
zygotePolicyFlags, isTopApp, disabledCompatChanges,
|
||||
pkgDataInfoMap, bindMountAppStorageDirs, zygoteArgs);
|
||||
pkgDataInfoMap, whitelistedDataInfoMap, bindMountAppsData,
|
||||
bindMountAppStorageDirs, zygoteArgs);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@@ -661,7 +668,8 @@ public class Process {
|
||||
runtimeFlags, mountExternal, targetSdkVersion, seInfo,
|
||||
abi, instructionSet, appDataDir, invokeWith, packageName,
|
||||
/*zygotePolicyFlags=*/ ZYGOTE_POLICY_FLAG_EMPTY, /*isTopApp=*/ false,
|
||||
disabledCompatChanges, /* pkgDataInfoMap */ null, false, zygoteArgs);
|
||||
disabledCompatChanges, /* pkgDataInfoMap */ null,
|
||||
/* whitelistedDataInfoMap */ null, false, false, zygoteArgs);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -333,6 +333,9 @@ public class ZygoteProcess {
|
||||
* started.
|
||||
* @param pkgDataInfoMap Map from related package names to private data directory
|
||||
* volume UUID and inode number.
|
||||
* @param whitelistedDataInfoMap Map from whitelisted package names to private data directory
|
||||
* volume UUID and inode number.
|
||||
* @param bindMountAppsData whether zygote needs to mount CE and DE data.
|
||||
* @param bindMountAppStorageDirs whether zygote needs to mount Android/obb and Android/data.
|
||||
*
|
||||
* @param zygoteArgs Additional arguments to supply to the Zygote process.
|
||||
@@ -355,6 +358,9 @@ public class ZygoteProcess {
|
||||
@Nullable long[] disabledCompatChanges,
|
||||
@Nullable Map<String, Pair<String, Long>>
|
||||
pkgDataInfoMap,
|
||||
@Nullable Map<String, Pair<String, Long>>
|
||||
whitelistedDataInfoMap,
|
||||
boolean bindMountAppsData,
|
||||
boolean bindMountAppStorageDirs,
|
||||
@Nullable String[] zygoteArgs) {
|
||||
// TODO (chriswailes): Is there a better place to check this value?
|
||||
@@ -367,7 +373,8 @@ public class ZygoteProcess {
|
||||
runtimeFlags, mountExternal, targetSdkVersion, seInfo,
|
||||
abi, instructionSet, appDataDir, invokeWith, /*startChildZygote=*/ false,
|
||||
packageName, zygotePolicyFlags, isTopApp, disabledCompatChanges,
|
||||
pkgDataInfoMap, bindMountAppStorageDirs, zygoteArgs);
|
||||
pkgDataInfoMap, whitelistedDataInfoMap, bindMountAppsData,
|
||||
bindMountAppStorageDirs, zygoteArgs);
|
||||
} catch (ZygoteStartFailedEx ex) {
|
||||
Log.e(LOG_TAG,
|
||||
"Starting VM process through Zygote failed");
|
||||
@@ -608,6 +615,9 @@ public class ZygoteProcess {
|
||||
* @param disabledCompatChanges a list of disabled compat changes for the process being started.
|
||||
* @param pkgDataInfoMap Map from related package names to private data directory volume UUID
|
||||
* and inode number.
|
||||
* @param whitelistedDataInfoMap Map from whitelisted package names to private data directory
|
||||
* volume UUID and inode number.
|
||||
* @param bindMountAppsData whether zygote needs to mount CE and DE data.
|
||||
* @param bindMountAppStorageDirs whether zygote needs to mount Android/obb and Android/data.
|
||||
* @param extraArgs Additional arguments to supply to the zygote process.
|
||||
* @return An object that describes the result of the attempt to start the process.
|
||||
@@ -631,6 +641,9 @@ public class ZygoteProcess {
|
||||
@Nullable long[] disabledCompatChanges,
|
||||
@Nullable Map<String, Pair<String, Long>>
|
||||
pkgDataInfoMap,
|
||||
@Nullable Map<String, Pair<String, Long>>
|
||||
whitelistedDataInfoMap,
|
||||
boolean bindMountAppsData,
|
||||
boolean bindMountAppStorageDirs,
|
||||
@Nullable String[] extraArgs)
|
||||
throws ZygoteStartFailedEx {
|
||||
@@ -728,11 +741,33 @@ public class ZygoteProcess {
|
||||
}
|
||||
argsForZygote.add(sb.toString());
|
||||
}
|
||||
if (whitelistedDataInfoMap != null && whitelistedDataInfoMap.size() > 0) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(Zygote.WHITELISTED_DATA_INFO_MAP);
|
||||
sb.append("=");
|
||||
boolean started = false;
|
||||
for (Map.Entry<String, Pair<String, Long>> entry : whitelistedDataInfoMap.entrySet()) {
|
||||
if (started) {
|
||||
sb.append(',');
|
||||
}
|
||||
started = true;
|
||||
sb.append(entry.getKey());
|
||||
sb.append(',');
|
||||
sb.append(entry.getValue().first);
|
||||
sb.append(',');
|
||||
sb.append(entry.getValue().second);
|
||||
}
|
||||
argsForZygote.add(sb.toString());
|
||||
}
|
||||
|
||||
if (bindMountAppStorageDirs) {
|
||||
argsForZygote.add(Zygote.BIND_MOUNT_APP_STORAGE_DIRS);
|
||||
}
|
||||
|
||||
if (bindMountAppsData) {
|
||||
argsForZygote.add(Zygote.BIND_MOUNT_APP_DATA_DIRS);
|
||||
}
|
||||
|
||||
if (disabledCompatChanges != null && disabledCompatChanges.length > 0) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("--disabled-compat-changes=");
|
||||
@@ -1291,6 +1326,7 @@ public class ZygoteProcess {
|
||||
true /* startChildZygote */, null /* packageName */,
|
||||
ZYGOTE_POLICY_FLAG_SYSTEM_PROCESS /* zygotePolicyFlags */, false /* isTopApp */,
|
||||
null /* disabledCompatChanges */, null /* pkgDataInfoMap */,
|
||||
null /* whitelistedDataInfoMap */, false /* bindMountAppsData*/,
|
||||
/* bindMountAppStorageDirs */ false, extraArgs);
|
||||
|
||||
} catch (ZygoteStartFailedEx ex) {
|
||||
|
||||
Reference in New Issue
Block a user