From: Razvan Cojocaru Date: Fri, 29 Jan 2016 16:50:05 +0000 (+0100) Subject: x86/vm_event: reset monitor in vm_event_cleanup_domain() X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=b848dc83cc3f500a9d9f7ebcf16eece7f31566ba;p=people%2Fliuw%2Flibxenctrl-split%2Fxen.git x86/vm_event: reset monitor in vm_event_cleanup_domain() It is currently possible to leave a monitor flag enabled even after vm_event_cleanup_domain() has been called, potentially leading to a crash in hvm_msr_write_intercept() and hvm_set_crX() (when v->arch.vm_event has become NULL, but the corresponding corresponding v->domain->arch.monitor flag is non-zero). This patch zeroes out arch.monitor in vm_event_cleanup_domain(). Signed-off-by: Razvan Cojocaru Reviewed-by: Andrew Cooper Acked-by: Tamas K Lengyel --- diff --git a/xen/arch/x86/vm_event.c b/xen/arch/x86/vm_event.c index 9677eccb40..08d678a9cf 100644 --- a/xen/arch/x86/vm_event.c +++ b/xen/arch/x86/vm_event.c @@ -56,6 +56,7 @@ void vm_event_cleanup_domain(struct domain *d) } d->arch.mem_access_emulate_each_rep = 0; + memset(&d->arch.monitor, 0, sizeof(d->arch.monitor)); } void vm_event_toggle_singlestep(struct domain *d, struct vcpu *v)