KVM: arm64: Explicitly treat routing entry type changes as changes
authorSean Christopherson <seanjc@google.com>
Wed, 11 Jun 2025 22:45:04 +0000 (15:45 -0700)
committerMarc Zyngier <maz@kernel.org>
Thu, 19 Jun 2025 08:58:21 +0000 (09:58 +0100)
Explicitly treat type differences as GSI routing changes, as comparing MSI
data between two entries could get a false negative, e.g. if userspace
changed the type but left the type-specific data as-

Note, the same bug was fixed in x86 by commit bcda70c56f3e ("KVM: x86:
Explicitly treat routing entry type changes as changes").

Fixes: 4bf3693d36af ("KVM: arm64: Unmap vLPIs affected by changes to GSI routing information")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
Link: https://lore.kernel.org/r/20250611224604.313496-3-seanjc@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/arm.c

index de2b4e9c9f9fb35cc174c36151b6fe4b8cb0bcf4..38a91bb5d4c75145daf890ec988288bdcec0ab3e 100644 (file)
@@ -2764,7 +2764,8 @@ void kvm_arch_irq_bypass_del_producer(struct irq_bypass_consumer *cons,
 bool kvm_arch_irqfd_route_changed(struct kvm_kernel_irq_routing_entry *old,
                                  struct kvm_kernel_irq_routing_entry *new)
 {
-       if (new->type != KVM_IRQ_ROUTING_MSI)
+       if (old->type != KVM_IRQ_ROUTING_MSI ||
+           new->type != KVM_IRQ_ROUTING_MSI)
                return true;
 
        return memcmp(&old->msi, &new->msi, sizeof(new->msi));