Moves a test which determines if we actually need to perform a
authorRalf Baechle <ralf@linux-mips.org>
Thu, 10 Feb 2005 13:54:37 +0000 (13:54 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Sat, 29 Oct 2005 18:30:31 +0000 (19:30 +0100)
cacheflush to the right place.  That's a bug which is harmless on UP
but a severe bug on SMP.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/mm/c-r4k.c

index b165b73..4291673 100644 (file)
@@ -376,6 +376,13 @@ static inline void local_r4k_flush_cache_page(void *args)
        pmd_t *pmdp;
        pte_t *ptep;
 
+       /*
+        * If ownes no valid ASID yet, cannot possibly have gotten
+        * this page into the cache.
+        */
+       if (cpu_context(smp_processor_id(), vma->vm_mm) == 0)
+               return;
+
        page &= PAGE_MASK;
        pgdp = pgd_offset(mm, page);
        pudp = pud_offset(pgdp, page);
@@ -432,13 +439,6 @@ static void r4k_flush_cache_page(struct vm_area_struct *vma, unsigned long page,
 {
        struct flush_cache_page_args args;
 
-       /*
-        * If ownes no valid ASID yet, cannot possibly have gotten
-        * this page into the cache.
-        */
-       if (cpu_context(smp_processor_id(), vma->vm_mm) == 0)
-               return;
-
        args.vma = vma;
        args.page = page;