summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-04-19 04:20:31 +0000
committeralc <alc@FreeBSD.org>2002-04-19 04:20:31 +0000
commitbafd353ecee1b42f93565fca15a34fbb8f02cd39 (patch)
tree68b4f34a5ddb81ad3244d745c6537603d5c7f0c4
parenta88daa02f8231b1162b4a70c172a66f6ac9accfd (diff)
downloadFreeBSD-src-bafd353ecee1b42f93565fca15a34fbb8f02cd39.zip
FreeBSD-src-bafd353ecee1b42f93565fca15a34fbb8f02cd39.tar.gz
o Move the acquisition of Giant from vm_fault() to the point
after initialization in vm_fault1(). o Fix some style problems in vm_fault1().
-rw-r--r--sys/vm/vm_fault.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index bdac6b8..1558f62 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -189,9 +189,6 @@ vm_fault(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type,
{
int ret;
- mtx_lock(&Giant);
- /* GIANT_REQUIRED */
-
ret = vm_fault1(map, vaddr, fault_type, fault_flags);
mtx_unlock(&Giant);
return (ret);
@@ -211,12 +208,11 @@ vm_fault1(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type,
int faultcount;
struct faultstate fs;
- GIANT_REQUIRED;
-
- cnt.v_vm_faults++;
hardfault = 0;
growstack = TRUE;
+ atomic_add_int(&cnt.v_vm_faults, 1);
+ mtx_lock(&Giant);
RetryFault:;
/*
@@ -224,11 +220,11 @@ RetryFault:;
* search.
*/
fs.map = map;
- if ((result = vm_map_lookup(&fs.map, vaddr,
- fault_type, &fs.entry, &fs.first_object,
- &fs.first_pindex, &prot, &wired)) != KERN_SUCCESS) {
- if ((result != KERN_PROTECTION_FAILURE) ||
- ((fault_flags & VM_FAULT_WIRE_MASK) != VM_FAULT_USER_WIRE)) {
+ result = vm_map_lookup(&fs.map, vaddr, fault_type, &fs.entry,
+ &fs.first_object, &fs.first_pindex, &prot, &wired);
+ if (result != KERN_SUCCESS) {
+ if (result != KERN_PROTECTION_FAILURE ||
+ (fault_flags & VM_FAULT_WIRE_MASK) != VM_FAULT_USER_WIRE) {
if (growstack && result == KERN_INVALID_ADDRESS &&
map != kernel_map && curproc != NULL) {
result = vm_map_growstack(curproc, vaddr);
@@ -237,7 +233,7 @@ RetryFault:;
growstack = FALSE;
goto RetryFault;
}
- return result;
+ return (result);
}
/*
OpenPOWER on IntegriCloud