KVM: x86: reading DR cannot fail
authorPaolo Bonzini <pbonzini@redhat.com>
Wed, 3 Feb 2021 08:42:41 +0000 (03:42 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 9 Feb 2021 13:17:07 +0000 (08:17 -0500)
kvm_get_dr and emulator_get_dr except an in-range value for the register
number so they cannot fail.  Change the return type to void.

Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/kvm_emulate.h
arch/x86/kvm/vmx/vmx.c
arch/x86/kvm/x86.c

index 1ed1206c196dbf529a5067af1b1303abfcfdebee..c451412a62303ba4de5032ee60d56b8a60f26683 100644 (file)
@@ -1562,7 +1562,7 @@ int kvm_set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3);
 int kvm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4);
 int kvm_set_cr8(struct kvm_vcpu *vcpu, unsigned long cr8);
 int kvm_set_dr(struct kvm_vcpu *vcpu, int dr, unsigned long val);
-int kvm_get_dr(struct kvm_vcpu *vcpu, int dr, unsigned long *val);
+void kvm_get_dr(struct kvm_vcpu *vcpu, int dr, unsigned long *val);
 unsigned long kvm_get_cr8(struct kvm_vcpu *vcpu);
 void kvm_lmsw(struct kvm_vcpu *vcpu, unsigned long msw);
 void kvm_get_cs_db_l_bits(struct kvm_vcpu *vcpu, int *db, int *l);
index 43c93ffa76edf8bb87559ea0e7b2b3f72d667034..0d359115429ad2b51c97dc13eeb26a4b99a33569 100644 (file)
@@ -205,7 +205,7 @@ struct x86_emulate_ops {
        ulong (*get_cr)(struct x86_emulate_ctxt *ctxt, int cr);
        int (*set_cr)(struct x86_emulate_ctxt *ctxt, int cr, ulong val);
        int (*cpl)(struct x86_emulate_ctxt *ctxt);
-       int (*get_dr)(struct x86_emulate_ctxt *ctxt, int dr, ulong *dest);
+       void (*get_dr)(struct x86_emulate_ctxt *ctxt, int dr, ulong *dest);
        int (*set_dr)(struct x86_emulate_ctxt *ctxt, int dr, ulong value);
        u64 (*get_smbase)(struct x86_emulate_ctxt *ctxt);
        void (*set_smbase)(struct x86_emulate_ctxt *ctxt, u64 smbase);
index 777177ea9a35edd996fe683deaf22cc9ba0e532f..049fbbd0aa1a537e3c064a1c12e2c451a750c7dc 100644 (file)
@@ -5142,8 +5142,7 @@ static int handle_dr(struct kvm_vcpu *vcpu)
        if (exit_qualification & TYPE_MOV_FROM_DR) {
                unsigned long val;
 
-               if (kvm_get_dr(vcpu, dr, &val))
-                       return 1;
+               kvm_get_dr(vcpu, dr, &val);
                kvm_register_write(vcpu, reg, val);
        } else
                if (kvm_set_dr(vcpu, dr, kvm_register_readl(vcpu, reg)))
index d9f931c632936d7b4709bdc45a15cdba3d780d8f..dcb67429b75db3f92700514e45d5278a14a67b09 100644 (file)
@@ -1181,7 +1181,7 @@ int kvm_set_dr(struct kvm_vcpu *vcpu, int dr, unsigned long val)
 }
 EXPORT_SYMBOL_GPL(kvm_set_dr);
 
-int kvm_get_dr(struct kvm_vcpu *vcpu, int dr, unsigned long *val)
+void kvm_get_dr(struct kvm_vcpu *vcpu, int dr, unsigned long *val)
 {
        size_t size = ARRAY_SIZE(vcpu->arch.db);
 
@@ -1198,7 +1198,6 @@ int kvm_get_dr(struct kvm_vcpu *vcpu, int dr, unsigned long *val)
                *val = vcpu->arch.dr7;
                break;
        }
-       return 0;
 }
 EXPORT_SYMBOL_GPL(kvm_get_dr);
 
@@ -6610,10 +6609,10 @@ static void emulator_wbinvd(struct x86_emulate_ctxt *ctxt)
        kvm_emulate_wbinvd_noskip(emul_to_vcpu(ctxt));
 }
 
-static int emulator_get_dr(struct x86_emulate_ctxt *ctxt, int dr,
-                          unsigned long *dest)
+static void emulator_get_dr(struct x86_emulate_ctxt *ctxt, int dr,
+                           unsigned long *dest)
 {
-       return kvm_get_dr(emul_to_vcpu(ctxt), dr, dest);
+       kvm_get_dr(emul_to_vcpu(ctxt), dr, dest);
 }
 
 static int emulator_set_dr(struct x86_emulate_ctxt *ctxt, int dr,