Browse Source

[PATCH] x86-64: Fix off by one error in IOMMU boundary checking

Should be harmless because there is normally no memory there, but
technically it was incorrect.

Pointed out by Leo Duran

Signed-off-by: Andi Kleen <ak@suse.de>
Andi Kleen 18 years ago
parent
commit
00edefae05
1 changed files with 2 additions and 2 deletions
  1. 2 2
      arch/x86_64/kernel/pci-gart.c

+ 2 - 2
arch/x86_64/kernel/pci-gart.c

@@ -185,7 +185,7 @@ static void iommu_full(struct device *dev, size_t size, int dir)
 static inline int need_iommu(struct device *dev, unsigned long addr, size_t size)
 static inline int need_iommu(struct device *dev, unsigned long addr, size_t size)
 { 
 { 
 	u64 mask = *dev->dma_mask;
 	u64 mask = *dev->dma_mask;
-	int high = addr + size >= mask;
+	int high = addr + size > mask;
 	int mmu = high;
 	int mmu = high;
 	if (force_iommu) 
 	if (force_iommu) 
 		mmu = 1; 
 		mmu = 1; 
@@ -195,7 +195,7 @@ static inline int need_iommu(struct device *dev, unsigned long addr, size_t size
 static inline int nonforced_iommu(struct device *dev, unsigned long addr, size_t size)
 static inline int nonforced_iommu(struct device *dev, unsigned long addr, size_t size)
 { 
 { 
 	u64 mask = *dev->dma_mask;
 	u64 mask = *dev->dma_mask;
-	int high = addr + size >= mask;
+	int high = addr + size > mask;
 	int mmu = high;
 	int mmu = high;
 	return mmu; 
 	return mmu; 
 }
 }