Port 311886c6c6fcd3b531531f592d56caab5e2a259c to art.
ARM kernel ASLR bug workaround.
Bug: 5817320
Change-Id: I9a04e669a642c08a07b0b3da29700d2cfd8d279f
diff --git a/src/native/dalvik_system_Zygote.cc b/src/native/dalvik_system_Zygote.cc
index b4f69fb..cdc4c29 100644
--- a/src/native/dalvik_system_Zygote.cc
+++ b/src/native/dalvik_system_Zygote.cc
@@ -18,6 +18,7 @@
#include <paths.h>
#include <signal.h>
#include <stdlib.h>
+#include <sys/personality.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
@@ -316,6 +317,13 @@
PLOG(FATAL) << "setuid(" << uid << ") failed";
}
+ // Work around ARM kernel ASLR lossage (http://b/5817320).
+ int old_personality = personality(0xffffffff);
+ int new_personality = personality(old_personality | ADDR_NO_RANDOMIZE);
+ if (new_personality == -1) {
+ PLOG(WARNING) << "personality(" << new_personality << ") failed";
+ }
+
SetCapabilities(permittedCapabilities, effectiveCapabilities);
#if 1