summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_glue.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-03-17 03:19:31 +0000
committeralc <alc@FreeBSD.org>2002-03-17 03:19:31 +0000
commit227f4f1377adfc8f4a63826da35c5e87456a473e (patch)
tree3fd13b03ff318882c0192220ac50fc5876b14702 /sys/vm/vm_glue.c
parent0fa4622b6586ab2df8824be20c60990998953acd (diff)
downloadFreeBSD-src-227f4f1377adfc8f4a63826da35c5e87456a473e.zip
FreeBSD-src-227f4f1377adfc8f4a63826da35c5e87456a473e.tar.gz
Acquire a read lock on the map inside of vm_map_check_protection() rather
than expecting the caller to do so. This (1) eliminates duplicated code in kernacc() and useracc() and (2) fixes missing synchronization in munmap().
Diffstat (limited to 'sys/vm/vm_glue.c')
-rw-r--r--sys/vm/vm_glue.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c
index 678da3b..3263180 100644
--- a/sys/vm/vm_glue.c
+++ b/sys/vm/vm_glue.c
@@ -128,9 +128,7 @@ kernacc(addr, len, rw)
prot = rw;
saddr = trunc_page((vm_offset_t)addr);
eaddr = round_page((vm_offset_t)addr + len);
- vm_map_lock_read(kernel_map);
rv = vm_map_check_protection(kernel_map, saddr, eaddr, prot);
- vm_map_unlock_read(kernel_map);
return (rv == TRUE);
}
@@ -163,7 +161,7 @@ useracc(addr, len, rw)
return (FALSE);
}
map = &curproc->p_vmspace->vm_map;
- vm_map_lock_read(map);
+
/*
* We save the map hint, and restore it. Useracc appears to distort
* the map hint unnecessarily.
@@ -172,7 +170,6 @@ useracc(addr, len, rw)
rv = vm_map_check_protection(map,
trunc_page((vm_offset_t)addr), round_page((vm_offset_t)addr + len), prot);
map->hint = save_hint;
- vm_map_unlock_read(map);
return (rv == TRUE);
}
OpenPOWER on IntegriCloud