lkml.org 
[lkml]   [2020]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 087/107] kvm: x86: Toggling CR4.SMAP does not load PDPTEs in PAE mode
    Date
    From: Jim Mattson <jmattson@google.com>

    [ Upstream commit 427890aff8558eb4326e723835e0eae0e6fe3102 ]

    See the SDM, volume 3, section 4.4.1:

    If PAE paging would be in use following an execution of MOV to CR0 or
    MOV to CR4 (see Section 4.1.1) and the instruction is modifying any of
    CR0.CD, CR0.NW, CR0.PG, CR4.PAE, CR4.PGE, CR4.PSE, or CR4.SMEP; then
    the PDPTEs are loaded from the address in CR3.

    Fixes: 0be0226f07d14 ("KVM: MMU: fix SMAP virtualization")
    Cc: Xiao Guangrong <guangrong.xiao@linux.intel.com>
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: Peter Shier <pshier@google.com>
    Reviewed-by: Oliver Upton <oupton@google.com>
    Message-Id: <20200817181655.3716509-2-jmattson@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/x86/kvm/x86.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
    index 38b2df0e71096..1721a8c8eb26c 100644
    --- a/arch/x86/kvm/x86.c
    +++ b/arch/x86/kvm/x86.c
    @@ -972,7 +972,7 @@ int kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)
    {
    unsigned long old_cr4 = kvm_read_cr4(vcpu);
    unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE |
    - X86_CR4_SMEP | X86_CR4_SMAP | X86_CR4_PKE;
    + X86_CR4_SMEP | X86_CR4_PKE;

    if (kvm_valid_cr4(vcpu, cr4))
    return 1;
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-08-24 10:49    [W:4.136 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site