[PATCH 2/2 Lucid CVE-2012-2137] KVM: Fix buffer overflow in kvm_set_irq()
Tim Gardner
tim.gardner at canonical.com
Thu Sep 6 21:06:55 UTC 2012
From: Avi Kivity <avi at redhat.com>
CVE-2012-2137
BugLink: http://bugs.launchpad.net/bugs/1016298
kvm_set_irq() has an internal buffer of three irq routing entries, allowing
connecting a GSI to three IRQ chips or on MSI. However setup_routing_entry()
does not properly enforce this, allowing three irqchip routes followed by
an MSI route to overflow the buffer.
Fix by ensuring that an MSI entry is added to an empty list.
Signed-off-by: Avi Kivity <avi at redhat.com>
(cherry picked from commit f2ebd422f71cda9c791f76f85d2ca102ae34a1ed)
Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
---
virt/kvm/irq_comm.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/virt/kvm/irq_comm.c b/virt/kvm/irq_comm.c
index 40935be..5494097 100644
--- a/virt/kvm/irq_comm.c
+++ b/virt/kvm/irq_comm.c
@@ -300,6 +300,7 @@ static int setup_routing_entry(struct kvm_irq_routing_table *rt,
*/
hlist_for_each_entry(ei, n, &rt->map[ue->gsi], link)
if (ei->type == KVM_IRQ_ROUTING_MSI ||
+ ue->type == KVM_IRQ_ROUTING_MSI ||
ue->u.irqchip.irqchip == ei->irqchip.irqchip)
return r;
--
1.7.9.5
More information about the kernel-team
mailing list