KVM allowed to set non boot apic id via setting apic state
if using older non x2apic 32 bit apic id userspace api.

Signed-off-by: Maxim Levitsky <mlevi...@redhat.com>
---
 arch/x86/kvm/lapic.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index 7ff695cab27b2..aeddd68d31181 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -2592,15 +2592,15 @@ static int kvm_apic_state_fixup(struct kvm_vcpu *vcpu,
                if (enable_apicv && (*id >> 24) != vcpu->vcpu_id)
                        return -EINVAL;
        } else {
-               if (vcpu->kvm->arch.x2apic_format) {
-                       if (*id != vcpu->vcpu_id)
-                               return -EINVAL;
-               } else {
-                       if (set)
-                               *id >>= 24;
-                       else
-                               *id <<= 24;
-               }
+
+               if (!vcpu->kvm->arch.x2apic_format && set)
+                       *id >>= 24;
+
+               if (*id != vcpu->vcpu_id)
+                       return -EINVAL;
+
+               if (!vcpu->kvm->arch.x2apic_format && !set)
+                       *id <<= 24;
 
                /* In x2APIC mode, the LDR is fixed and based on the id */
                if (set)
-- 
2.26.3

Reply via email to