mm: Ignore the FD on MAP_ANON mmaps
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 28 Feb 2018 16:46:51 +0000 (11:46 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 6 Apr 2018 19:23:01 +0000 (15:23 -0400)
Linux lets you do this.  Portable apps should set FD to -1 when they don't
have a file, i.e. anonymous maps, but we can be liberal in what we receive.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/mm.c

index 8d5a1c2..ee0ae43 100644 (file)
@@ -451,15 +451,11 @@ void *mmap(struct proc *p, uintptr_t addr, size_t len, int prot, int flags,
                set_errno(EINVAL);
                return MAP_FAILED;
        }
-       if (fd >= 0 && (flags & MAP_ANON)) {
-               set_errno(EBADF);
-               return MAP_FAILED;
-       }
        if (!len) {
                set_errno(EINVAL);
                return MAP_FAILED;
        }
-       if (fd != -1) {
+       if (!(flags & MAP_ANON) && (fd >= 0)) {
                file = get_file_from_fd(&p->open_files, fd);
                if (!file) {
                        set_errno(EBADF);