2010-06-15 17:10:15

by Florian Zumbiehl

[permalink] [raw]
Subject: [PATCH] __ioremap_caller(): make check for ioremapping of RAM cover complete mapping

Hi,

the patch is untested and someone with detailed understanding of the
semantics of this code probably should check for correctness of
the fixed version in corner cases.

Florian
---------------------------------------------------------------------------
x86 __ioremap_caller(): fix check for overlap with RAM to check the
last page of the mapping as well.

Signed-off-by: Florian Zumbiehl <[email protected]>

diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index a4643e5..4c3e4f9 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -101,7 +101,7 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
* Don't allow anybody to remap normal RAM that we're using..
*/
for (pfn = phys_addr >> PAGE_SHIFT;
- (pfn << PAGE_SHIFT) < (last_addr & PAGE_MASK);
+ pfn <= (last_addr >> PAGE_SHIFT);
pfn++) {

int is_ram = page_is_ram(pfn);