diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c index 142650e82979..f445c10df8df 100644 --- a/drivers/iommu/dmar.c +++ b/drivers/iommu/dmar.c @@ -662,10 +662,9 @@ static int __init dmar_acpi_dev_scope_init(void) if (dmar_tbl == NULL) return -ENODEV; - andd = (void *)dmar_tbl + sizeof(struct acpi_table_dmar); - - while (((unsigned long)andd) < - ((unsigned long)dmar_tbl) + dmar_tbl->length) { + for (andd = (void *)dmar_tbl + sizeof(struct acpi_table_dmar); + ((unsigned long)andd) < ((unsigned long)dmar_tbl) + dmar_tbl->length; + andd = ((void *)andd) + andd->header.length) { if (andd->header.type == ACPI_DMAR_TYPE_ANDD) { acpi_handle h; struct acpi_device *adev; @@ -685,7 +684,6 @@ static int __init dmar_acpi_dev_scope_init(void) } dmar_acpi_insert_dev_scope(andd->device_number, adev); } - andd = ((void *)andd) + andd->header.length; } return 0; }