lkml.org 
[lkml]   [2020]   [Feb]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.5 69/80] KVM: x86: Mask off reserved bit from #DB exception payload
    Date
    From: Oliver Upton <oupton@google.com>

    commit 307f1cfa269657c63cfe2c932386fcc24684d9dd upstream.

    KVM defines the #DB payload as compatible with the 'pending debug
    exceptions' field under VMX, not DR6. Mask off bit 12 when applying the
    payload to DR6, as it is reserved on DR6 but not the 'pending debug
    exceptions' field.

    Fixes: f10c729ff965 ("kvm: vmx: Defer setting of DR6 until #DB delivery")
    Signed-off-by: Oliver Upton <oupton@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/x86/kvm/x86.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    --- a/arch/x86/kvm/x86.c
    +++ b/arch/x86/kvm/x86.c
    @@ -437,6 +437,14 @@ void kvm_deliver_exception_payload(struc
    * for #DB exceptions under VMX.
    */
    vcpu->arch.dr6 ^= payload & DR6_RTM;
    +
    + /*
    + * The #DB payload is defined as compatible with the 'pending
    + * debug exceptions' field under VMX, not DR6. While bit 12 is
    + * defined in the 'pending debug exceptions' field (enabled
    + * breakpoint), it is reserved and must be zero in DR6.
    + */
    + vcpu->arch.dr6 &= ~BIT(12);
    break;
    case PF_VECTOR:
    vcpu->arch.cr2 = payload;

    \
     
     \ /
      Last update: 2020-02-18 21:05    [W:4.185 / U:0.240 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site