]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/x86/mm/gup.c
x86: work around MTRR mask setting, v2
[linux-2.6-omap-h63xx.git] / arch / x86 / mm / gup.c
index 3085f25b4355de827fee53d8851180a844777517..007bb06c750477b60c158f667f5d0563c2d77433 100644 (file)
@@ -223,14 +223,17 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write,
                        struct page **pages)
 {
        struct mm_struct *mm = current->mm;
-       unsigned long end = start + (nr_pages << PAGE_SHIFT);
-       unsigned long addr = start;
+       unsigned long addr, len, end;
        unsigned long next;
        pgd_t *pgdp;
        int nr = 0;
 
+       start &= PAGE_MASK;
+       addr = start;
+       len = (unsigned long) nr_pages << PAGE_SHIFT;
+       end = start + len;
        if (unlikely(!access_ok(write ? VERIFY_WRITE : VERIFY_READ,
-                                       start, nr_pages*PAGE_SIZE)))
+                                       start, len)))
                goto slow_irqon;
 
        /*