summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authormlarkin <mlarkin@openbsd.org>2015-11-24 09:07:09 +0000
committermlarkin <mlarkin@openbsd.org>2015-11-24 09:07:09 +0000
commit1051df2bb378032f9904af014095be55bc9559f2 (patch)
treeb11d0e8a00dbbccf6df9dd501a626c72dc4e3f24 /sys
parentDon't fake a bulleted list by prefixing items with 'o'. (diff)
downloadwireguard-openbsd-1051df2bb378032f9904af014095be55bc9559f2.tar.xz
wireguard-openbsd-1051df2bb378032f9904af014095be55bc9559f2.zip
Don't loop forever trying to handle NP faults in certain failure cases.
reported by Stefan Kempf with supplied patch, thanks.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/amd64/amd64/vmm.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/arch/amd64/amd64/vmm.c b/sys/arch/amd64/amd64/vmm.c
index 55d2801ed44..c069c65cf32 100644
--- a/sys/arch/amd64/amd64/vmm.c
+++ b/sys/arch/amd64/amd64/vmm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vmm.c,v 1.6 2015/11/21 11:16:30 mpi Exp $ */
+/* $OpenBSD: vmm.c,v 1.7 2015/11/24 09:07:09 mlarkin Exp $ */
/*
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
*
@@ -2666,6 +2666,8 @@ vmx_handle_exit(struct vcpu *vcpu, int *result)
switch (exit_reason) {
case VMX_EXIT_EPT_VIOLATION:
*result = vmx_handle_np_fault(vcpu);
+ if (*result)
+ handled = 0;
break;
case VMX_EXIT_CPUID:
*result = vmx_handle_cpuid(vcpu);
@@ -2881,7 +2883,7 @@ vmx_handle_np_fault(struct vcpu *vcpu)
default:
printf("unknown memory type %d for GPA 0x%llx\n",
gpa_memtype, gpa);
- break;
+ return (EINVAL);
}
return (ret);