On 18/04/19 16:19, Borislav Petkov wrote:
> On Thu, Apr 18, 2019 at 06:56:06AM -0700, Sean Christopherson wrote:
>> This doesn't allow writing '0' regardless of msr_hwcr.BIT(18), which was
>> previously supported.
> 
> Restored the old conditional:
> 
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index 10f6acc6494c..f74f1280745b 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -2318,7 +2318,8 @@ static int set_msr_mce(struct kvm_vcpu *vcpu, struct 
> msr_data *msr_info)
>                               return -1;
>  
>                       /* MCi_STATUS */
> -                     if ((offset & 0x3) == 1 && !msr_info->host_initiated) {
> +                     if (!msr_info->host_initiated &&
> +                         (offset & 0x3) == 1 && data != 0) {
>                               if (!can_set_mci_status(vcpu))
>                                       return -1;
>                       }
> 
>> And there's no need for multiple if statements.
> 
> It is a bit more readable this way.
> 
> Actually, I'd break that if above into smaller if-statements with
> flipped logic to make it even more readable:
> 
>       if (msr_info->host_initiated)
>               goto set_msr;
> 
>       if (!(offset & 0x3))
>               goto set_msr;
> 
>       if (!data)
>               goto set_msr;
> 
>       if (!can_set_mci_status(vcpu))
>               return -1;
> 
> set_msr:
>       ...
> 
> 
> Anything else? Can I send v5.2 now?

No need, squashing this in before running away for vacation.

Paolo

Reply via email to