Page MenuHomeFreeBSD

D27243.id79740.diff
No OneTemporary

D27243.id79740.diff

Index: head/usr.sbin/bhyve/bhyverun.c
===================================================================
--- head/usr.sbin/bhyve/bhyverun.c
+++ head/usr.sbin/bhyve/bhyverun.c
@@ -766,7 +766,11 @@
vie_restart(vie);
mode = vmexit->u.inst_emul.paging.cpu_mode;
cs_d = vmexit->u.inst_emul.cs_d;
- (void)vmm_decode_instruction(mode, cs_d, vie);
+ if (vmm_decode_instruction(mode, cs_d, vie) != 0)
+ goto fail;
+ if (vm_set_register(ctx, *pvcpu, VM_REG_GUEST_RIP,
+ vmexit->rip + vie->num_processed) != 0)
+ goto fail;
}
err = emulate_mem(ctx, *pvcpu, vmexit->u.inst_emul.gpa,
@@ -777,15 +781,17 @@
EPRINTLN("Unhandled memory access to 0x%lx\n",
vmexit->u.inst_emul.gpa);
}
-
- fprintf(stderr, "Failed to emulate instruction sequence [ ");
- for (i = 0; i < vie->num_valid; i++)
- fprintf(stderr, "%02x", vie->inst[i]);
- FPRINTLN(stderr, " ] at 0x%lx", vmexit->rip);
- return (VMEXIT_ABORT);
+ goto fail;
}
return (VMEXIT_CONTINUE);
+
+fail:
+ fprintf(stderr, "Failed to emulate instruction sequence [ ");
+ for (i = 0; i < vie->num_valid; i++)
+ fprintf(stderr, "%02x", vie->inst[i]);
+ FPRINTLN(stderr, " ] at 0x%lx", vmexit->rip);
+ return (VMEXIT_ABORT);
}
static pthread_mutex_t resetcpu_mtx = PTHREAD_MUTEX_INITIALIZER;

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 16, 4:49 PM (13 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29778003
Default Alt Text
D27243.id79740.diff (1 KB)

Event Timeline