x86, iomap: Fix wrong page aligned size calculation in ioremapping code
authorFlorian Zumbiehl <florz@florz.de>
Tue, 20 Jul 2010 22:19:47 +0000 (15:19 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Tue, 20 Jul 2010 23:56:35 +0000 (16:56 -0700)
x86 early_iounmap(): fix off-by-one error in page alignment of allocation
size for sizes where size%PAGE_SIZE==1.

Signed-off-by: Florian Zumbiehl <florz@florz.de>
LKML-Reference: <201007202219.o6KMJlES021058@imap1.linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/mm/ioremap.c

index d41d3a9..3ba6e06 100644 (file)
@@ -611,7 +611,7 @@ void __init early_iounmap(void __iomem *addr, unsigned long size)
                return;
        }
        offset = virt_addr & ~PAGE_MASK;
-       nrpages = PAGE_ALIGN(offset + size - 1) >> PAGE_SHIFT;
+       nrpages = PAGE_ALIGN(offset + size) >> PAGE_SHIFT;
 
        idx = FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*slot;
        while (nrpages > 0) {