Core/jni: Disallow relocation for decryption
When decrypting a device, a tmpfs is temporarily mounted as /data, the size of which is usually small. When the zygote, system server and necessary apps are brought up, they will be compiled into the tmpfs. If the system image contains prebuilts, they will be relocated instead of compiled. This is unnecessary. In this special situation it is acceptable to run out of the prebuilt oat files without relocation, which can save space in the tmpfs. This patch ensures that the boot image is not being relocated. Change-Id: I42bfb7e3039574b7e4f2772e0d395f093d59ed1b Signed-off-by: Hyangseok Chae <neo.chae@lge.com>
This commit is contained in:
@@ -696,6 +696,14 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
|
||||
if (skip_compilation) {
|
||||
addOption("-Xcompiler-option");
|
||||
addOption("--compiler-filter=verify-none");
|
||||
|
||||
// We skip compilation when a minimal runtime is brought up for decryption. In that case
|
||||
// /data is temporarily backed by a tmpfs, which is usually small.
|
||||
// If the system image contains prebuilts, they will be relocated into the tmpfs. In this
|
||||
// specific situation it is acceptable to *not* relocate and run out of the prebuilts
|
||||
// directly instead.
|
||||
addOption("--runtime-arg");
|
||||
addOption("-Xnorelocate");
|
||||
} else {
|
||||
parseCompilerOption("dalvik.vm.dex2oat-filter", dex2oatCompilerFilterBuf,
|
||||
"--compiler-filter=", "-Xcompiler-option");
|
||||
|
||||
Reference in New Issue
Block a user