vmalloc.c: fix flushing in vmap_page_range()

The flush_cache_vmap in vmap_page_range() is called with the end of the
range twice.  The following patch fixes this for me.

Signed-off-by: Adam Lackorzynski <adam@os.inf.tu-dresden.de>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Adam Lackorzynski 2009-01-04 12:00:46 -08:00 committed by Linus Torvalds
parent 7b574b7b01
commit 2e4e27c7d0

View file

@ -151,11 +151,12 @@ static int vmap_pud_range(pgd_t *pgd, unsigned long addr,
* *
* Ie. pte at addr+N*PAGE_SIZE shall point to pfn corresponding to pages[N] * Ie. pte at addr+N*PAGE_SIZE shall point to pfn corresponding to pages[N]
*/ */
static int vmap_page_range(unsigned long addr, unsigned long end, static int vmap_page_range(unsigned long start, unsigned long end,
pgprot_t prot, struct page **pages) pgprot_t prot, struct page **pages)
{ {
pgd_t *pgd; pgd_t *pgd;
unsigned long next; unsigned long next;
unsigned long addr = start;
int err = 0; int err = 0;
int nr = 0; int nr = 0;
@ -167,7 +168,7 @@ static int vmap_page_range(unsigned long addr, unsigned long end,
if (err) if (err)
break; break;
} while (pgd++, addr = next, addr != end); } while (pgd++, addr = next, addr != end);
flush_cache_vmap(addr, end); flush_cache_vmap(start, end);
if (unlikely(err)) if (unlikely(err))
return err; return err;