| From ebb630bbfe07a54f4e50c7de8b00ba6a45033df0 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 15 Jun 2021 12:57:09 +1200 |
| Subject: KVM: x86/mmu: Fix return value in tdp_mmu_map_handle_target_level() |
| |
| From: Kai Huang <kai.huang@intel.com> |
| |
| [ Upstream commit 57a3e96d6d17ae5ac9861ef34af024a627f1c3bb ] |
| |
| Currently tdp_mmu_map_handle_target_level() returns 0, which is |
| RET_PF_RETRY, when page fault is actually fixed. This makes |
| kvm_tdp_mmu_map() also return RET_PF_RETRY in this case, instead of |
| RET_PF_FIXED. Fix by initializing ret to RET_PF_FIXED. |
| |
| Note that kvm_mmu_page_fault() resumes guest on both RET_PF_RETRY and |
| RET_PF_FIXED, which means in practice returning the two won't make |
| difference, so this fix alone won't be necessary for stable tree. |
| |
| Fixes: bb18842e2111 ("kvm: x86/mmu: Add TDP MMU PF handler") |
| Reviewed-by: Sean Christopherson <seanjc@google.com> |
| Reviewed-by: Ben Gardon <bgardon@google.com> |
| Signed-off-by: Kai Huang <kai.huang@intel.com> |
| Message-Id: <f9e8956223a586cd28c090879a8ff40f5eb6d609.1623717884.git.kai.huang@intel.com> |
| Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/x86/kvm/mmu/tdp_mmu.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/arch/x86/kvm/mmu/tdp_mmu.c b/arch/x86/kvm/mmu/tdp_mmu.c |
| index 61c00f8631f1..f2ddf663e72e 100644 |
| --- a/arch/x86/kvm/mmu/tdp_mmu.c |
| +++ b/arch/x86/kvm/mmu/tdp_mmu.c |
| @@ -527,7 +527,7 @@ static int tdp_mmu_map_handle_target_level(struct kvm_vcpu *vcpu, int write, |
| kvm_pfn_t pfn, bool prefault) |
| { |
| u64 new_spte; |
| - int ret = 0; |
| + int ret = RET_PF_FIXED; |
| int make_spte_ret = 0; |
| |
| if (unlikely(is_noslot_pfn(pfn))) { |
| -- |
| 2.30.2 |
| |