aboutsummaryrefslogtreecommitdiffstats
path: root/xen/drivers/passthrough/vtd/iommu.c
diff options
context:
space:
mode:
Diffstat (limited to 'xen/drivers/passthrough/vtd/iommu.c')
-rw-r--r--xen/drivers/passthrough/vtd/iommu.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index 071a91b0ac..8c24c04584 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1198,6 +1198,9 @@ int __init iommu_alloc(struct acpi_drhd_unit *drhd)
dprintk(VTDPREFIX,
"cap = %"PRIx64" ecap = %"PRIx64"\n", iommu->cap, iommu->ecap);
}
+ if ( !(iommu->cap + 1) || !(iommu->ecap + 1) )
+ return -ENODEV;
+
if ( cap_fault_reg_offset(iommu->cap) +
cap_num_fault_regs(iommu->cap) * PRIMARY_FAULT_REG_LEN >= PAGE_SIZE ||
ecap_iotlb_offset(iommu->ecap) >= PAGE_SIZE )