| From 0de66d5b35ee148455e268b2782873204ffdef4b Mon Sep 17 00:00:00 2001 |
| From: Joerg Roedel <joerg.roedel@amd.com> |
| Date: Mon, 6 Jun 2011 16:04:02 +0200 |
| Subject: x86/amd-iommu: Fix 3 possible endless loops |
| |
| From: Joerg Roedel <joerg.roedel@amd.com> |
| |
| commit 0de66d5b35ee148455e268b2782873204ffdef4b upstream. |
| |
| The driver contains several loops counting on an u16 value |
| where the exit-condition is checked against variables that |
| can have values up to 0xffff. In this case the loops will |
| never exit. This patch fixed 3 such loops. |
| |
| Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| arch/x86/kernel/amd_iommu_init.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/arch/x86/kernel/amd_iommu_init.c |
| +++ b/arch/x86/kernel/amd_iommu_init.c |
| @@ -646,8 +646,8 @@ static void __init init_iommu_from_acpi( |
| { |
| u8 *p = (u8 *)h; |
| u8 *end = p, flags = 0; |
| - u16 dev_i, devid = 0, devid_start = 0, devid_to = 0; |
| - u32 ext_flags = 0; |
| + u16 devid = 0, devid_start = 0, devid_to = 0; |
| + u32 dev_i, ext_flags = 0; |
| bool alias = false; |
| struct ivhd_entry *e; |
| |
| @@ -802,7 +802,7 @@ static void __init init_iommu_from_acpi( |
| /* Initializes the device->iommu mapping for the driver */ |
| static int __init init_iommu_devices(struct amd_iommu *iommu) |
| { |
| - u16 i; |
| + u32 i; |
| |
| for (i = iommu->first_device; i <= iommu->last_device; ++i) |
| set_iommu_for_device(iommu, i); |
| @@ -1088,7 +1088,7 @@ static int __init init_memory_definition |
| */ |
| static void init_device_table(void) |
| { |
| - u16 devid; |
| + u32 devid; |
| |
| for (devid = 0; devid <= amd_iommu_last_bdf; ++devid) { |
| set_dev_entry_bit(devid, DEV_ENTRY_VALID); |