diff -r 660cd5afaa97 xen/drivers/passthrough/vtd/dmar.c --- a/xen/drivers/passthrough/vtd/dmar.c Tue Jul 22 21:12:44 2008 +0800 +++ b/xen/drivers/passthrough/vtd/dmar.c Wed Jul 23 16:05:55 2008 +0800 @@ -349,6 +349,12 @@ acpi_parse_one_rmrr(struct acpi_dmar_ent 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;