2013-09-09 15:27:39 +00:00
|
|
|
# Commit 3785d30efe8264b899499e0883b10cc434bd0959
|
|
|
|
# Date 2013-08-29 09:31:37 +0200
|
|
|
|
# Author Jan Beulich <jbeulich@suse.com>
|
|
|
|
# Committer Jan Beulich <jbeulich@suse.com>
|
|
|
|
AMD IOMMU: add missing check
|
|
|
|
|
|
|
|
We shouldn't accept IVHD tables specifying IO-APIC IDs beyond the limit
|
|
|
|
we support (MAX_IO_APICS, currently 128).
|
|
|
|
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
|
|
|
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
|
|
|
Acked-by: Suravee Suthikulpanit <suravee.suthikulapanit@amd.com>
|
|
|
|
|
2013-10-02 22:41:46 +00:00
|
|
|
--- a/xen/drivers/passthrough/amd/iommu_acpi.c
|
|
|
|
+++ b/xen/drivers/passthrough/amd/iommu_acpi.c
|
2013-09-09 15:27:39 +00:00
|
|
|
@@ -674,6 +674,13 @@ static u16 __init parse_ivhd_device_spec
|
|
|
|
if ( IO_APIC_ID(apic) != special->handle )
|
|
|
|
continue;
|
|
|
|
|
|
|
|
+ if ( special->handle >= ARRAY_SIZE(ioapic_sbdf) )
|
|
|
|
+ {
|
|
|
|
+ printk(XENLOG_ERR "IVHD Error: IO-APIC %#x entry beyond bounds\n",
|
|
|
|
+ special->handle);
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
if ( ioapic_sbdf[special->handle].pin_2_idx )
|
|
|
|
{
|
|
|
|
if ( ioapic_sbdf[special->handle].bdf == bdf &&
|