diff options
author | Calin Juravle <calin@google.com> | 2014-10-28 12:16:21 +0000 |
---|---|---|
committer | Calin Juravle <calin@google.com> | 2014-10-29 13:17:54 +0000 |
commit | e11952ecd5f170b66f6fe9e13d927c233777d65e (patch) | |
tree | 26767c1a11f9e7138b8fd7d65004f448fbacc931 /core/jni | |
parent | e9d6743649eb0e767ba46d9d8ac0d94f15b8c318 (diff) | |
download | frameworks_base-e11952ecd5f170b66f6fe9e13d927c233777d65e.zip frameworks_base-e11952ecd5f170b66f6fe9e13d927c233777d65e.tar.gz frameworks_base-e11952ecd5f170b66f6fe9e13d927c233777d65e.tar.bz2 |
Use native brige only if we have a private data directory.
Bug: 18027433
(cherry picked from commit 6a4d2369e5493cea86817634eceb0be46ba7d7a6)
Change-Id: I08b4e7172cd66c9006c26f07e3399848999cd74d
Diffstat (limited to 'core/jni')
-rw-r--r-- | core/jni/com_android_internal_os_Zygote.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp index 1eb83b2..4f5e08b 100644 --- a/core/jni/com_android_internal_os_Zygote.cpp +++ b/core/jni/com_android_internal_os_Zygote.cpp @@ -436,10 +436,6 @@ static pid_t ForkAndSpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArra pid_t pid = fork(); if (pid == 0) { - if (!is_system_server && dataDir == NULL) { - ALOGE("Application private dir cannot be null"); - RuntimeAbort(env); - } // The child process. gMallocLeakZygoteChild = 1; @@ -462,6 +458,14 @@ static pid_t ForkAndSpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArra ScopedUtfChars isa_string(env, instructionSet); use_native_bridge = android::NeedsNativeBridge(isa_string.c_str()); } + if (use_native_bridge && dataDir == NULL) { + // dataDir should never be null if we need to use a native bridge. + // In general, dataDir will never be null for normal applications. It can only happen in + // special cases (for isolated processes which are not associated with any app). These are + // launched by the framework and should not be emulated anyway. + use_native_bridge = false; + ALOGW("Native bridge will not be used because dataDir == NULL."); + } if (!MountEmulatedStorage(uid, mount_external, use_native_bridge)) { ALOGW("Failed to mount emulated storage: %s", strerror(errno)); |