Don't populate / fault in prot == 0 pages
authorBarret Rhoden <brho@cs.berkeley.edu>
Sat, 23 Mar 2013 02:36:09 +0000 (19:36 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sat, 23 Mar 2013 02:38:49 +0000 (19:38 -0700)
We get the warning on line 551 a lot, from glibc/malloc.  It's probably
because we're always MAP_POPULATING, regardless of what is asked for.
Note that you shouldn't try to populate a prot == 0.

Now that the warning might mean something, we'll actually look at it.

kern/src/mm.c

index 4bfec87..82df573 100644 (file)
@@ -543,7 +543,7 @@ void *__do_mmap(struct proc *p, uintptr_t addr, size_t len, int prot, int flags,
         * If HPF errors out, we'll warn for now, since it is likely a bug in
         * userspace, though since POPULATE is an opportunistic thing, we don't need
         * to actually kill the process. */
-       if (flags & MAP_POPULATE)
+       if (flags & MAP_POPULATE && vmr->vm_prot != PROT_NONE)
                for (int i = 0; i < num_pages; i++) {
                        retval = __handle_page_fault(p, addr + i * PGSIZE, vmr->vm_prot);
                        if (retval) {