Intel-IOMMU Alignment Issue in dma_pte_clear_range()
authorFenghua Yu <fenghua.yu@intel.com>
Mon, 6 Apr 2009 18:21:49 +0000 (11:21 -0700)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Mon, 6 Apr 2009 21:47:00 +0000 (14:47 -0700)
commit31d3568dfeb1dfb2735f119efe5ece7c6d40969c
tree1318855f27727682e4ceda925c499ae99d6f4bba
parentffa009c366e33f3eae48bba2547051fe15795f64
Intel-IOMMU Alignment Issue in dma_pte_clear_range()

This issue was pointed out by Linus.

In dma_pte_clear_range() in intel-iommu.c

start = PAGE_ALIGN(start);
end &= PAGE_MASK;
npages = (end - start) / VTD_PAGE_SIZE;

In partial page case, start could be bigger than end and npages will be
negative.

Currently the issue doesn't show up as a real bug in because start and
end have been aligned to page boundary already by all callers. So the
issue has been hidden. But it is dangerous programming practice.

Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/pci/intel-iommu.c