summaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorJan H. Schönherr <jschoenh@amazon.de>2017-09-07 19:02:48 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2017-09-15 16:55:28 +0200
commit36ae3c0a36b7456432fedce38ae2f7bd3e01a563 (patch)
treef105afd5971726ea0c85b46fd24f62c7235633cb /virt
parent51aa68e7d57e3217192d88ce90fd5b8ef29ec94f (diff)
downloadlinux-stable-36ae3c0a36b7456432fedce38ae2f7bd3e01a563.tar.gz
linux-stable-36ae3c0a36b7456432fedce38ae2f7bd3e01a563.tar.bz2
linux-stable-36ae3c0a36b7456432fedce38ae2f7bd3e01a563.zip
KVM: Don't accept obviously wrong gsi values via KVM_IRQFD
We cannot add routes for gsi values >= KVM_MAX_IRQ_ROUTES -- see kvm_set_irq_routing(). Hence, there is no sense in accepting them via KVM_IRQFD. Prevent them from entering the system in the first place. Signed-off-by: Jan H. Schönherr <jschoenh@amazon.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'virt')
-rw-r--r--virt/kvm/eventfd.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c
index f2ac53ab8243..c608ab495282 100644
--- a/virt/kvm/eventfd.c
+++ b/virt/kvm/eventfd.c
@@ -565,6 +565,8 @@ kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args)
{
if (args->flags & ~(KVM_IRQFD_FLAG_DEASSIGN | KVM_IRQFD_FLAG_RESAMPLE))
return -EINVAL;
+ if (args->gsi >= KVM_MAX_IRQ_ROUTES)
+ return -EINVAL;
if (args->flags & KVM_IRQFD_FLAG_DEASSIGN)
return kvm_irqfd_deassign(kvm, args);