From: Keir Fraser Date: Fri, 25 Jul 2008 13:04:17 +0000 (+0100) Subject: vtd: During parsing DMAR table, if find RMRR is incorrect, return error. X-Git-Tag: 3.2.2-rc1~1 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=4a4e5c157b68fa0a60d60d356f3db7bdc1c5c028;p=people%2Fvhanquez%2Fxen.git vtd: During parsing DMAR table, if find RMRR is incorrect, return error. Signed-off-by: Weidong Han xen-unstable changeset: 18114:ba6be1571cc628298c5a0666f261b660fdcaeac0 xen-unstable date: Wed Jul 23 09:58:48 2008 +0100 --- diff --git a/xen/arch/x86/hvm/vmx/vtd/dmar.c b/xen/arch/x86/hvm/vmx/vtd/dmar.c index a13c2db56..2632e3cf6 100644 --- a/xen/arch/x86/hvm/vmx/vtd/dmar.c +++ b/xen/arch/x86/hvm/vmx/vtd/dmar.c @@ -436,6 +436,12 @@ acpi_parse_one_rmrr(struct acpi_dmar_entry_header *header) struct acpi_rmrr_unit *rmrru; 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;