diff -r 806e66a6cb1a xen/drivers/passthrough/vtd/dmar.c --- a/xen/drivers/passthrough/vtd/dmar.c Wed Jul 16 13:57:34 2008 +0100 +++ b/xen/drivers/passthrough/vtd/dmar.c Thu Jul 17 15:58:44 2008 +0800 @@ -349,6 +349,9 @@ 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 ) + return -EFAULT; + rmrru = xmalloc(struct acpi_rmrr_unit); if ( !rmrru ) return -ENOMEM;