From: Keir Fraser Date: Wed, 23 Jul 2008 08:58:48 +0000 (+0100) Subject: vtd: During parsing DMAR table, if find RMRR is incorrect, return error. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14165^2~141 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=597683c799e9d53aba3d2af4758d35dd7bf437b4;p=xen.git vtd: During parsing DMAR table, if find RMRR is incorrect, return error. Signed-off-by: Weidong Han --- diff --git a/xen/drivers/passthrough/vtd/dmar.c b/xen/drivers/passthrough/vtd/dmar.c index 501622edd1..1d39575ecc 100644 --- a/xen/drivers/passthrough/vtd/dmar.c +++ b/xen/drivers/passthrough/vtd/dmar.c @@ -349,6 +349,12 @@ acpi_parse_one_rmrr(struct acpi_dmar_entry_header *header) void *dev_scope_start, *dev_scope_end; int ret = 0; + if ( rmrr->base_address >= rmrr->end_address ) + { + dprintk(XENLOG_ERR VTDPREFIX, "RMRR is incorrect.\n"); + return -EFAULT; + } + rmrru = xmalloc(struct acpi_rmrr_unit); if ( !rmrru ) return -ENOMEM;