From: Jan Beulich Date: Wed, 24 Nov 2021 10:12:03 +0000 (+0100) Subject: VT-d: correct off-by-1 in fault register range check X-Git-Tag: archive/raspbian/4.17.0-1+rpi1^2~33^2~1321 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=08826a044ebfefc429aaecb861dc31051f2bb288;p=xen.git VT-d: correct off-by-1 in fault register range check All our present implementation requires is that the range fully fits in a single page. No need to exclude the case of the last register extending right to the end of that page. Signed-off-by: Jan Beulich Reviewed-by: Kevin Tian --- diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c index dab8590e25..c1bf48cbcb 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -1273,7 +1273,7 @@ int __init iommu_alloc(struct acpi_drhd_unit *drhd) quirk_iommu_caps(iommu); if ( cap_fault_reg_offset(iommu->cap) + - cap_num_fault_regs(iommu->cap) * PRIMARY_FAULT_REG_LEN >= PAGE_SIZE || + cap_num_fault_regs(iommu->cap) * PRIMARY_FAULT_REG_LEN > PAGE_SIZE || ecap_iotlb_offset(iommu->ecap) >= PAGE_SIZE ) { printk(XENLOG_ERR VTDPREFIX "IOMMU: unsupported\n");