intel-iommu: Fix integer overflow in dma_pte_{clear_range,free_pagetable}()
authorDavid Woodhouse <David.Woodhouse@intel.com>
Sat, 19 Sep 2009 14:36:28 +0000 (07:36 -0700)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Sat, 19 Sep 2009 14:36:28 +0000 (07:36 -0700)
commit59c36286b74ae6a8adebf6e133a83d7f2e3e6704
treead6d608b560dc540330bdcc89e8702ac85993174
parent2ebe31513fcbe7a781f27002f065b50ae195022f
intel-iommu: Fix integer overflow in dma_pte_{clear_range,free_pagetable}()

If end_pfn is equal to (unsigned long)-1, then the loop will never end.

Seen on 32-bit kernel, but could have happened on 64-bit too once we get
hardware that supports 64-bit guest addresses.

Change both functions to a 'do {} while' loop with the test at the end,
and check for the PFN having wrapper round to zero.

Reported-by: Benjamin LaHaise <ben.lahaise@neterion.com>
Tested-by: Benjamin LaHaise <ben.lahaise@neterion.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/pci/intel-iommu.c