Page MenuHomeFreeBSD

D29442.id.diff
No OneTemporary

D29442.id.diff

diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -506,6 +506,8 @@
PMAP_ENTER_LARGEPAGE, bdry_idx);
VM_OBJECT_WLOCK(fs->first_object);
vm_page_xunbusy(m);
+ if (rv != KERN_SUCCESS)
+ goto out;
if ((fs->fault_flags & VM_FAULT_WIRE) != 0) {
for (i = 0; i < atop(pagesizes[bdry_idx]); i++)
vm_page_wire(m + i);
@@ -586,7 +588,7 @@
}
out:
curthread->td_ru.ru_majflt++;
- return (KERN_SUCCESS);
+ return (rv);
}
static int prot_fault_translation;
@@ -1073,6 +1075,7 @@
switch (rv) {
case KERN_SUCCESS:
case KERN_FAILURE:
+ case KERN_PROTECTION_FAILURE:
case KERN_RESTART:
return (rv);
case KERN_NOT_RECEIVER:
@@ -1343,6 +1346,7 @@
goto RetryFault;
case KERN_SUCCESS:
case KERN_FAILURE:
+ case KERN_PROTECTION_FAILURE:
case KERN_OUT_OF_BOUNDS:
unlock_and_deallocate(&fs);
return (rv);
@@ -1410,6 +1414,7 @@
goto RetryFault;
case KERN_SUCCESS:
case KERN_FAILURE:
+ case KERN_PROTECTION_FAILURE:
case KERN_OUT_OF_BOUNDS:
unlock_and_deallocate(&fs);
return (rv);

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 18, 9:56 AM (6 h, 55 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15853579
Default Alt Text
D29442.id.diff (1 KB)

Event Timeline