On Friday, November 06, 2015 02:07:23 PM Jan Stancek wrote: > 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 <jstancek@xxxxxxxxxx> > Cc: Paul Moore <paul@xxxxxxxxxxxxxx> > Cc: Stephen Smalley <sds@xxxxxxxxxxxxx> > --- > 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); > + } Can you explain how you arrived at 16? It looks a bit like a magic number to me, which always gives me pause. Based on a quick read of the man page, it would seem like any value greater than "pagesize" would work, yes? > 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); -- paul moore www.paul-moore.com _______________________________________________ Selinux mailing list Selinux@xxxxxxxxxxxxx To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx. To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.