Prevent memory fragmentation.

	Bug: 5817320

Prevent memory fragmentation and potential allocation failures. This
change is temporary.

Change-Id: Id1e8f9606687648235ea9e18861125a8c799d812
diff --git a/vm/Android.mk b/vm/Android.mk
index 17b5a04..c23c160 100644
--- a/vm/Android.mk
+++ b/vm/Android.mk
@@ -69,6 +69,9 @@
     # Enable assertions and JIT self-verification
     LOCAL_CFLAGS += -UNDEBUG -DDEBUG=1 -DLOG_NDEBUG=1 -DWITH_DALVIK_ASSERT \
                     -DWITH_SELF_VERIFICATION $(target_smp_flag)
+
+    LOCAL_C_INCLUDES += bionic/libc/kernel/common
+
     LOCAL_MODULE := libdvm_sv
     include $(BUILD_SHARED_LIBRARY)
 
@@ -123,6 +126,8 @@
             $(patsubst libffi, ,$(LOCAL_SHARED_LIBRARIES))
     endif
 
+    LOCAL_C_INCLUDES += bionic/libc/kernel/common
+
     LOCAL_CFLAGS += $(host_smp_flag)
     LOCAL_MODULE_TAGS := optional
     LOCAL_MODULE := libdvm
diff --git a/vm/native/dalvik_system_Zygote.cpp b/vm/native/dalvik_system_Zygote.cpp
index 31fecfd..2d66cef 100644
--- a/vm/native/dalvik_system_Zygote.cpp
+++ b/vm/native/dalvik_system_Zygote.cpp
@@ -21,6 +21,7 @@
 #include "native/InternalNativePriv.h"
 
 #include <signal.h>
+#include <linux/personality.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <grp.h>
@@ -446,6 +447,12 @@
             dvmAbort();
         }
 
+        int current = personality(0xffffFFFF);
+        int success = personality((ADDR_NO_RANDOMIZE | current));
+        if (success == -1) {
+          LOGW("Personality switch failed. current=%d error=%d\n", current, errno);
+        }
+
         err = setCapabilities(permittedCapabilities, effectiveCapabilities);
         if (err != 0) {
             LOGE("cannot set capabilities (%llx,%llx): %s",