[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>
This commit is contained in:
Andi Kleen 2007-02-13 13:26:24 +01:00 committed by Andi Kleen
parent ffb6017563
commit 00edefae05
1 changed files with 2 additions and 2 deletions

View File

@ -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;
} }