On 10/05/2017 12:19, Wanpeng Li wrote:
>                * with old userspace.
>                */
> -             if (xstate_bv & ~kvm_supported_xcr0())
> +             if (xstate_bv & ~kvm_supported_xcr0() ||
> +                     mxcsr & 
> ~vcpu->arch.guest_fpu.state.xsave.i387.mxcsr_mask)
>                       return -EINVAL;
>               load_xsave(vcpu, (u8 *)guest_xsave->region);
>       } else {
> -             if (xstate_bv & ~XFEATURE_MASK_FPSSE)
> +             if (xstate_bv & ~XFEATURE_MASK_FPSSE ||
> +                     mxcsr & ~vcpu->arch.guest_fpu.state.fxsave.mxcsr_mask)
>                       return -EINVAL;
>               memcpy(&vcpu->arch.guest_fpu.state.fxsave,
>                       guest_xsave->region, sizeof(struct fxregs_state));

Hmm, thinking more about it, maybe use mxcsr_feature_mask instead of
digging into vcpu->arch.guest_fpu?  If you send v2, please remember to
Cc sta...@vger.kernel.org.

Paolo

Reply via email to