]> git.itanic.dy.fi Git - linux-stable/commitdiff
KVM: x86: Make kvm_hv_get_assist_page() return 0/-errno
authorVitaly Kuznetsov <vkuznets@redhat.com>
Tue, 1 Nov 2022 14:54:05 +0000 (15:54 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 18 Nov 2022 17:59:18 +0000 (12:59 -0500)
Convert kvm_hv_get_assist_page() to return 'int' and propagate possible
errors from kvm_read_guest_cached().

Suggested-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20221101145426.251680-28-vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/hyperv.c
arch/x86/kvm/hyperv.h
arch/x86/kvm/vmx/hyperv.c

index ce245e37d08fc9d9618ba185220fd28935092f93..15880da73a7b19ec4c376a5ede5c6ee3cccdc963 100644 (file)
@@ -900,15 +900,15 @@ bool kvm_hv_assist_page_enabled(struct kvm_vcpu *vcpu)
 }
 EXPORT_SYMBOL_GPL(kvm_hv_assist_page_enabled);
 
-bool kvm_hv_get_assist_page(struct kvm_vcpu *vcpu)
+int kvm_hv_get_assist_page(struct kvm_vcpu *vcpu)
 {
        struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
 
        if (!hv_vcpu || !kvm_hv_assist_page_enabled(vcpu))
-               return false;
+               return -EFAULT;
 
-       return !kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.pv_eoi.data,
-                                     &hv_vcpu->vp_assist_page, sizeof(struct hv_vp_assist_page));
+       return kvm_read_guest_cached(vcpu->kvm, &vcpu->arch.pv_eoi.data,
+                                    &hv_vcpu->vp_assist_page, sizeof(struct hv_vp_assist_page));
 }
 EXPORT_SYMBOL_GPL(kvm_hv_get_assist_page);
 
index 81313e418b80a48a5ae2fb05dd8a5c850d775ba8..5157622c2fb3a32f22ebad66c08fac20cfc078a5 100644 (file)
@@ -108,7 +108,7 @@ int kvm_hv_activate_synic(struct kvm_vcpu *vcpu, bool dont_zero_synic_pages);
 void kvm_hv_vcpu_uninit(struct kvm_vcpu *vcpu);
 
 bool kvm_hv_assist_page_enabled(struct kvm_vcpu *vcpu);
-bool kvm_hv_get_assist_page(struct kvm_vcpu *vcpu);
+int kvm_hv_get_assist_page(struct kvm_vcpu *vcpu);
 
 static inline struct kvm_vcpu_hv_stimer *to_hv_stimer(struct kvm_vcpu *vcpu,
                                                      int timer_index)
index 04a0bba58c7deb69c6a1b63d3739e6d0e124bab3..ae03d1fe03552174ff6673edffd8980f123d3cda 100644 (file)
@@ -326,7 +326,7 @@ u64 nested_get_evmptr(struct kvm_vcpu *vcpu)
 {
        struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
 
-       if (unlikely(!kvm_hv_get_assist_page(vcpu)))
+       if (unlikely(kvm_hv_get_assist_page(vcpu)))
                return EVMPTR_INVALID;
 
        if (unlikely(!hv_vcpu->vp_assist_page.enlighten_vmentry))