[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:
parent
ffb6017563
commit
00edefae05
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue