This test failed on ppc64 with 64k pagesize because memory
allocation used mmap() instead of advancing heap.

Use mallopt(M_MMAP_THRESHOLD,..) with large enough value
to discourage use of mmap().

Also set length in mprotect to pagesize, kernel silently aligns
it to pagesize anyway.

Signed-off-by: Jan Stancek <[email protected]>
Cc: Paul Moore <[email protected]>
Cc: Stephen Smalley <[email protected]>
---
 tests/mmap/mprotect_heap.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/tests/mmap/mprotect_heap.c b/tests/mmap/mprotect_heap.c
index 691299493c3f..8b4321d6fc0b 100644
--- a/tests/mmap/mprotect_heap.c
+++ b/tests/mmap/mprotect_heap.c
@@ -3,6 +3,7 @@
 #include <stdlib.h>
 #include <errno.h>
 #include <sys/mman.h>
+#include <malloc.h>
 
 int main(void)
 {
@@ -10,13 +11,19 @@ int main(void)
        int rc;
        int pagesize = getpagesize();
 
+       rc = mallopt(M_MMAP_THRESHOLD, pagesize * 16);
+       if (rc != 1) {
+               fprintf(stderr, "mallopt failed: %d\n", rc);
+               exit(1);
+       }
+
        rc = posix_memalign(&ptr, pagesize, pagesize);
        if (rc) {
                fprintf(stderr, "posix_memalign failed: %d\n", rc);
                exit(1);
        }
 
-       rc = mprotect(ptr, 4096, PROT_READ | PROT_EXEC);
+       rc = mprotect(ptr, pagesize, PROT_READ | PROT_EXEC);
        if (rc < 0) {
                perror("mprotect");
                exit(1);
-- 
1.8.3.1

_______________________________________________
Selinux mailing list
[email protected]
To unsubscribe, send email to [email protected].
To get help, send an email containing "help" to [email protected].

Reply via email to