linux emu - MPSAFE work - acquire token for mmap
authorAlex Hornung <ahornung@gmail.com>
Sun, 13 Jun 2010 08:07:25 +0000 (09:07 +0100)
committerAlex Hornung <ahornung@gmail.com>
Sun, 13 Jun 2010 08:07:25 +0000 (09:07 +0100)
sys/emulation/linux/i386/linux_machdep.c

index 39d4d50..d8d3ecb 100644 (file)
@@ -632,7 +632,8 @@ linux_mmap_common(caddr_t linux_addr, size_t linux_len, int linux_prot,
                flags |= MAP_NOSYNC;
        }
 
-       get_mplock();
+       lwkt_gettoken(&vm_token);
+       lwkt_gettoken(&vmspace_token);
 
        if (linux_flags & LINUX_MAP_GROWSDOWN) {
                flags |= MAP_STACK;
@@ -716,7 +717,9 @@ linux_mmap_common(caddr_t linux_addr, size_t linux_len, int linux_prot,
 #endif
        error = kern_mmap(curproc->p_vmspace, addr, len,
                          prot, flags, fd, pos, &new);
-       rel_mplock();
+
+       lwkt_reltoken(&vmspace_token);
+       lwkt_reltoken(&vm_token);
 
        if (error == 0)
                *res = new;