Merge "x86_64: mmap rnd bits: Allow min bits of less than 32" into main am: 72d8882153
Original change: https://android-review.googlesource.com/c/platform/system/core/+/2825759 Change-Id: I9672c7ca311a3af7b860b49218697e4239b2740c Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
6585b0f0fa
1 changed files with 7 additions and 2 deletions
|
@ -20,6 +20,7 @@
|
|||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <linux/perf_event.h>
|
||||
#include <math.h>
|
||||
#include <selinux/selinux.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/syscall.h>
|
||||
|
@ -121,8 +122,12 @@ Result<void> SetMmapRndBitsAction(const BuiltinArguments&) {
|
|||
}
|
||||
#elif defined(__x86_64__)
|
||||
// x86_64 supports 28 - 32 rnd bits, but Android wants to ensure that the
|
||||
// theoretical maximum of 32 bits is always supported and used.
|
||||
if (SetMmapRndBitsMin(32, 32, false) && (!Has32BitAbi() || SetMmapRndBitsMin(16, 16, true))) {
|
||||
// theoretical maximum of 32 bits is always supported and used; except in
|
||||
// the case of the x86 page size emulator which supports a maximum
|
||||
// of 30 bits for 16k page size, or 28 bits for 64k page size.
|
||||
int max_bits = 32 - (static_cast<int>(log2(getpagesize())) - 12);
|
||||
if (SetMmapRndBitsMin(max_bits, max_bits, false) &&
|
||||
(!Has32BitAbi() || SetMmapRndBitsMin(16, 16, true))) {
|
||||
return {};
|
||||
}
|
||||
#elif defined(__arm__) || defined(__i386__)
|
||||
|
|
Loading…
Reference in a new issue