KVM: MMU: Reset mmu->pkru_mask to avoid stale data
authorChenyi Qiang <chenyi.qiang@intel.com>
Thu, 21 Oct 2021 07:10:22 +0000 (15:10 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 21 Oct 2021 15:09:29 +0000 (11:09 -0400)
When updating mmu->pkru_mask, the value can only be added but it isn't
reset in advance. This will make mmu->pkru_mask keep the stale data.
Fix this issue.

Fixes: 2d344105f57c ("KVM, pkeys: introduce pkru_mask to cache conditions")
Signed-off-by: Chenyi Qiang <chenyi.qiang@intel.com>
Message-Id: <20211021071022.1140-1-chenyi.qiang@intel.com>
Reviewed-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/mmu.c

index 1a64ba5b9437b14f59d07ff75bda3ce3a323bdde..0cc58901bf7a79a55fd3b9edce3eb6ebafc67a8c 100644 (file)
@@ -4596,10 +4596,10 @@ static void update_pkru_bitmask(struct kvm_mmu *mmu)
        unsigned bit;
        bool wp;
 
-       if (!is_cr4_pke(mmu)) {
-               mmu->pkru_mask = 0;
+       mmu->pkru_mask = 0;
+
+       if (!is_cr4_pke(mmu))
                return;
-       }
 
        wp = is_cr0_wp(mmu);