On 21/10/2016 18:39, Ido Yariv wrote: > vcpu->arch.wbinvd_dirty_mask may still be used after freeing it, > corrupting memory. For example, the following call trace may set a bit > in an already freed cpu mask: > kvm_arch_vcpu_load > vcpu_load > vmx_free_vcpu_nested > vmx_free_vcpu > kvm_arch_vcpu_free > > Fix this by deferring freeing of wbinvd_dirty_mask. > > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Ido Yariv <ido@xxxxxxxxxx> > --- > arch/x86/kvm/x86.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 6c633de..9ec8c1d 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -7410,10 +7410,12 @@ void kvm_put_guest_fpu(struct kvm_vcpu *vcpu) > > void kvm_arch_vcpu_free(struct kvm_vcpu *vcpu) > { > + void *wbinvd_dirty_mask = vcpu->arch.wbinvd_dirty_mask; > + > kvmclock_reset(vcpu); > > - free_cpumask_var(vcpu->arch.wbinvd_dirty_mask); > kvm_x86_ops->vcpu_free(vcpu); > + free_cpumask_var(wbinvd_dirty_mask); > } > > struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, > Reviewed-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html